无法使presentViewController工作

use*_*859 35 iphone xcode ipad presentmodalviewcontroller

我将一个工作的viewcontroller类从另一个项目复制到一个新项目中.我无法在新项目中加载视图.在旧项目中,我使用了presentModalViewController.在新的我无法使用presentModalViewController或presentViewController加载视图

我正在尝试从主视图控制器加载当前视图.

这是我的主视图控制器界面的样子......

//  ViewController.h
#import <UIKit/UIKit.h>
#import "RequestDialogViewController.h"

@interface ViewController : UIViewController <RequestDialogViewControllerDelegate> {

}

- (void)requestDialogViewDidDismiss:(RequestDialogViewController *)controller withResponse:(NSString*)response;
Run Code Online (Sandbox Code Playgroud)

我正在使用这样的presentModalViewController ......

RequestDialogViewController *requestIPViewController = [[RequestDialogViewController alloc] initWithNibName:@"RequestDialogViewController"  bundle:nil];
navigationController = [[UINavigationController alloc] initWithRootViewController:requestIPViewController];
[self presentModalViewController:navigationController animated:YES];
Run Code Online (Sandbox Code Playgroud)

和presentViewController这样......

RequestDialogViewController *requestIPViewController = [[RequestDialogViewController alloc] initWithNibName:@"RequestDialogViewController"  bundle:nil];    
[self presentViewController:requestIPViewController animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)

我在新项目中缺少什么?触发init方法,但viewDidLoad不会触发,也不会显示任何内容.

谢谢

Don*_*mer 85

如果ViewController是根视图控制器,则它不能在其自身内呈现模态视图控制器viewDidLoad,因为此时它没有像屏幕大小那样的信息.

如果已经显示其他视图控制器,则这将起作用.如果根视图控制器是a UINavigationController,则当模态视图从底部向上滑动时,您将看到从右侧滑入的视图.

无论如何,对于你来说ViewController,你最快可以呈现它是在它变得可见之后.使用计时器是不可靠的; 较旧和较慢的设备具有显着更长的加载时间.

对于更高的可靠性,实现viewDidAppear:ViewController.仍然使用您的计时器系统添加额外的延迟; 几分之一秒就足够了.虽然viewDidAppear在iOS 5.1模拟器中为我提供了模态视图控制器,但在加载另一个ViewController时呈现模态视图控制器说它有时不会发生.

  • 哇,这对我来说并不明显.我花了一些时间试图解决这个问题.谢谢. (3认同)