我在同一个故事板中有另一个ViewController,我想通过点击按钮切换到该故事板。问题是当我尝试控制 - 拖动第二个视图控制器在主视图控制器的ViewController.m文件中创建一个Outlet时,不会创建一个插座。
在Android中,我们可以从另一个活动中打开一个具有不同UI的新活动。我相信在iOS中同样可以实现,所以我的问题是如何创建第二个视图控制器的插座并以编程方式打开?
答案 0 :(得分:2)
在iOS中无法从一个IBOutlet
到另一个ViewController
创建ViewController
,但您可以使用UIStoryboardSegue
来实现此目的。
我建议您关注Apple文档中的Tutorial: Storyboards。它将帮助您了解ViewControllers的实际连接方式。
答案 1 :(得分:1)
使用SecondViewController
可以通过编程方式打开Storyboard Identifier
,您需要为要切换到的班级提供故事板标识名称,请参阅此图片,在我的演示中我有使用secondViewController
现在在buttonClick事件方法中使用此代码。
- (IBAction)buttonClicked:(id)sender {
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
SecondViewController *secondViewController = (SecondViewController *)[mainStoryboard instantiateViewControllerWithIdentifier:@"secondViewController"];
// Use this to show your UIViewController in modal transition.
[self presentViewController:secondViewController animated:YES completion:nil];
// Use this to show your UIViewController in push transition with navigation controller
//[self.navigationController pushViewController:secondViewController animated:YES];
}
答案 2 :(得分:0)
Try this
Viewcontroller*homeVC;
[self.navigationController setNavigationBarHidden:YES];
UIStoryboard *storyBoard;
storyBoard=[UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
homeVC=(HomeVC*)[storyBoard instantiateViewControllerWithIdentifier:@"HomeVC"];
[self.navigationController pushViewController:homeVC animated:YES];
答案 3 :(得分:0)
正如其他人所说,你不能这样做。 要覆盖并启动VC并保留其属性,您可以:
首先,在viewControllers之间创建segue:通过双击界面构建器的背景缩小视图。按Ctrl +从一个VC拖动到另一个VC并选择segue类型(例如show)。
为按钮创建操作,您可以在其中:
[self performSegueWithIdentifier:@"myIdentifier" sender:self];
之后,在-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
检查segue的标识符中,设置new yourCustomClassViewController并瞧!
if ([segue.identifier isEqualToString:@"myIdentifier"]) {
myCustomClassViewController *myCustomVC = [segue destinationViewController];
myCustomVC.oldProfile = newProfile;
}