6

我正在尝试进行一个简单的操作。至少看起来很简单。好的,我想做的是从使用模态视图控制器推送的视图中推送视图(使用推送视图控制器)。

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

4 回答 4

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];

这是使用情节提要的样子: 在此处输入图像描述

于 2012-10-12T02:48:03.673 回答
0

试试这个代码 AlarmList 是视图名称。

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

[self.navigationController pushViewController:loscr 动画:YES];

[loscr release];
于 2013-06-26T11:30:20.567 回答
0

尝试这个:

[self.navigationController pushViewController:view_3 animated:YES];
于 2012-10-11T22:56:31.817 回答
0

首先,我不确定 gegant_se 来自哪里。

其次,如果您从 view1 推送 view2 的方式与从 view2 推送 view3 的方式相同,那么您没有使用模态。

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

[self.navigationController pushViewController:view_3 animated:YES];
于 2012-10-11T22:58:48.630 回答