我的应用程序中有一个视图控制器,我的屏幕上有一个UIView,用户需要点击它。当他们这样做时,我想调用另一个viewController的视图,并在屏幕上显示给用户。不幸的是,我无法显示视图。
我正在进行调用的viewController的名称叫做“MainViewController”,而我想要显示的ViewController叫做“NextViewController”
以下是我拨打电话的代码:
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
NSLog(@"I was touched.");
_nextView = [[NextViewController alloc] init]; //this code is not being called
[self.view addSubview:_nextView.view]; //neither is this being called
}
其中_nextView是我在MainViewController的.h文件中声明的属性。
正在调用此方法,但出于某种原因,因为我能够看到日志语句打印到输出,但由于某种原因,我无法在此之后调用行。谁能看到我做错了什么?
感谢所有回复的人。
答案 0 :(得分:0)
您使用的是导航控制器吗?还是故事板?显示另一个视图控制器的一种方法是这样的:
[self presentViewController:_nextView animated:YES completion:^{
}];
有几件事: - 如果您的NSLog被调用,那么您说的其他两行也不会被调用。 - 我认为您的意思是要在屏幕上显示其他视图控制器,而不是在第一个视图控制器上显示其他视图控制器的视图。这是两个非常不同的东西,第二个是你不想做的。
答案 1 :(得分:0)
如果不将该视图控制器设置为子视图控制器,则不应将其他视图控制器的视图添加到视图中。如果您只想要一个视图,那么在xib文件中设置一个视图并将其作为子视图添加到视图中。如果你想使用一个视图控制器,那么你应该以模态方式呈现它,并在你完成后将其解除。在这种情况下,您希望从用户那里收集一些信息以便在您的应用中使用,这是使用模态视图控制器的合适位置。 MainViewController应将自己设置为NextViewController的委托,NextViewController应定义委托协议以将数据发送回MainViewController。
要以模态方式呈现,请执行以下操作:
_nextView = [[NextViewController alloc] initWithNibName:@"your nib name here" bundle:nil];
[self presentViewController:_nextView animated:YES completion:nil];