让我说我在ViewController1中,我想加载ViewController2。我知道实现此目的的唯一方法是使用ViewController1中的按钮,并连接到故事板中的ViewController2,但我不想这样做。我想在MyViewController1中的方法中做。例如,在我的viewDidLoad方法中。
非常感谢任何帮助。感谢
答案 0 :(得分:0)
不要混淆Views和ViewControllers。你发布标题表明你还没有完全根深蒂固。
如果要以编程方式显示另一个视图控制器,则只需为按钮创建一个操作方法并在那里执行。 ViewDidLoad绝对是不适合。
您可以像这样展示故事板中包含的视图控制器:
-(IBAction)goToDetails:(id)sender
{
//identify the correct storyboard
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"storyboard's name" bundle:nil];
//extract a view controller instance from the storyboard
DetailViewController *detailViewController = [storyboard instantiateViewControllerWithIdentifier:@"details view controller's identifier"];
//present the view controller instance
[self presentViewController:detailViewController
animated:YES
completion:nil];
}
这是一个例子,可以找到一个不相关的非故事板视图控制器。
-(IBAction)loginToSystem:(id)sender
{
LoginViewController *loginViewController = [[LoginViewController alloc] init];
[self presentViewController:loginViewController
animated:YES
completion:nil];
}
答案 1 :(得分:0)
如果您尝试将ViewController2管理的视图嵌入ViewController1管理的视图中,可以通过向ViewController1添加UIContainerView并使用指向ViewController2的嵌入segue来实现此目的。
这很有用,例如,如果您有一个ViewController2管理的可重用视图,并希望在多个位置使用它。
您可以通过将Object库中的UIContainerView拖到ViewController1的视图上来在InterfaceBuilder中执行此操作。然后,您可以将它创建的视图控制器的类更改为ViewController2。
答案 2 :(得分:0)
在故事板中创建一个从vc1到vc2的segue,给它起一个名字并致电:
[self performSegueWithIdentifier: @"mySegueCustomName" sender: self];