Iphone presentModalViewController不工作

Iphone presentModalViewController不工作,iphone,uiviewcontroller,Iphone,Uiviewcontroller,这是我的密码: ViewController *vc = [[ViewController alloc] initWithNibName:@"TableView" bundle:nil]; [self.navigationController presentModalViewController:vc animated:YES]; //[self setView:[vc view]]; 如果我叫它,什么也不会发生。但是,如果我将其更改为: ViewController *vc = [[View

这是我的密码:

ViewController *vc = [[ViewController alloc] initWithNibName:@"TableView" bundle:nil];
[self.navigationController presentModalViewController:vc animated:YES];
//[self setView:[vc view]];
如果我叫它,什么也不会发生。但是,如果我将其更改为:

ViewController *vc = [[ViewController alloc] initWithNibName:@"TableView" bundle:nil];
//[self.navigationController presentModalViewController:vc animated:YES];
[self setView:[vc view]];
视图看起来很好(当然没有过渡)。 我做错了什么?在初始化视图控制器时,您需要注意哪些特殊事项?我试着从苹果的例子中尽可能多地复制,但我无法让它工作

谢谢你的意见


--Ry

您只能从已经在屏幕上显示的控制器(通常通过UINavigationController或UITabBarController)显示模式视图控制器。尝试创建UINavigationController,将viewController推送到它,然后显示模态控制器。Xcode中有一个初学者项目,它展示了如果您不熟悉UINavigationController,如何创建基于它的流


另一件需要注意的事情是:如果没有将视图控制器推送到UINavigationController上,.navigationController属性将为零,消息传递将无效。

我在尝试在另一个模式视图上显示模式视图时遇到了相同的问题。Ben的回答是正确的,可以这样实施:

@interface FirstView: UIViewController {

    UIViewController *firstView;
}

- (IBAction)showOptionsView:(id)sender;

@end
在主视图类中:

- (void)viewDidLoad {
    [super viewDidLoad];

    firstView = [[UIViewController alloc]init];
    [firstView setView:self.view];
    [firstView setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
}

- (IBAction)showOptionsView:(id)sender {
    OptionsView *optView = [[OptionsView alloc]initWithNibName:@"OptionsView" bundle:nil];

    if(firstView != nil) {
        [firstView presentModalViewController:optView animated:YES];
        [optView release];
}

无聊的。难道没有更简单的方法吗?我真的不想创建一个UINavigationController只是为了能够向上滑动视图。。。不过,谢谢你的回答!您不必创建导航控制器来执行此操作,但您在此处引用它。如果只有一个视图控制器,您可以使用它来显示一个模态视图控制器(即,去掉“.navigationController”如果您的代码出现在上面的示例中,则必须将viewController的视图添加到主窗口中才能正常工作。浏览此处的用户需要做的另一件事是:您可能需要将用于显示VC的代码从viewDidLoad:移动到ViewDidDisplay:animated:。我猜这是因为视图尚未在viewDidLoad中显示在屏幕上。Hi@Ben Gottlieb and tom H和所有人。我对ipad上的UIModalViewController全屏有问题。我需要你的帮助。这是我的问题。你能帮我吗?请查看此链接了解我的问题…@TomH,谢谢你的建议。这对我帮助很大-实际上模型视图控制器必须在ViewDidDisplay中显示,而不是viewDidLoad!