将视图控制器推入模态视图控制器视图

时间:2012-10-11 22:48:49

标签: ios uinavigationcontroller pushviewcontroller

我正在努力完成一项简单的操作。至少看起来很简单。好吧,我想做的是从一个用模态视图控制器推动的视图中推送视图(使用推视图控制器)。

View1 - (使用模态视图控制器推送) - > View2 - (使用推视图控制器推送) - View3。

现在,我正在做测试,所以我正在使用按钮开始动作。这是我用来从View2推送到视图3的代码:

//view2.h
UIToolbar *bar;
UIBarButtonItem *button;
UIToolbar *toolbar;

}

- (IBAction)demissModal:(id)sender;
- (IBAction)goView3:(id)sender;

@end

//view2.m
- (IBAction)goView3:(id)sender{

View3 *view_3 = [[View3 alloc] initWithNibName:@"View3" bundle:nil];
[self.navigationController pushViewController:view_3 animated:YES];

}

这与我用于将View1推送到View2的代码相同,并且它可以正常工作。但是当将View2推送到View3时,它无法正常工作。知道为什么会这样吗?谢谢!

4 个答案:

答案 0 :(得分:11)

视图控制器实际上不是“模态”或“推送”视图控制器。 Modal或Push描述了视图控制器之间的转换(如果您使用的是故事板,则称为segues)。

我认为你问的是如何以模态方式呈现视图控制器,然后推送另一个控制器。技巧是当您以模态方式呈现视图控制器#1时,实际呈现导航控制器,其根视图控制器设置为视图控制器#1。

MyViewController *myViewController = [MyViewController alloc] init];
UINavigationController *navController = [UINavigationController alloc] initWithRootViewController:myViewController];

// Presuming a view controller is asking for the modal transition in the first place.
[self presentViewController:navController animated:YES completion:nil];
// Now in myViewController, call [self.navigationController pushViewController:secondViewController animated:YES];

这就像使用故事板一样: enter image description here

答案 1 :(得分:0)

试试这个:

[self.navigationController pushViewController:view_3 animated:YES];

答案 2 :(得分:0)

首先,我不确定gegant_se的来源。

其次,如果你从view1推送view2的方式与从view2推送view3的方式相同,那么你就不会使用模态。

每当您使用导航控制器推送视图控制器时,刚刚推送的视图控制器都会通过navigationController属性引用导航控制器。试试这个:

[self.navigationController pushViewController:view_3 animated:YES];

答案 3 :(得分:0)

尝试此代码AlarmList是视图名称。

AlarmListScreen * loscr = [[AlarmListScreen alloc] initWithNibName:nil bundle:nil];

[self.navigationController pushViewController:loscr animated:YES];

[loscr release];