手动加载视图目标c

时间:2015-02-24 17:33:11

标签: ios objective-c uiviewcontroller

让我说我在ViewController1中,我想加载ViewController2。我知道实现此目的的唯一方法是使用ViewController1中的按钮,并连接到故事板中的ViewController2,但我不想这样做。我想在MyViewController1中的方法中做。例如,在我的viewDidLoad方法中。

非常感谢任何帮助。感谢

3 个答案:

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