【问题标题】:loading a view manually objective c手动加载视图目标 c
【发布时间】:2015-02-24 17:33:11
【问题描述】:

假设我在 ViewController1 中,我想加载 ViewController2。我知道完成此操作的唯一方法是使用 ViewController1 中的按钮,并连接到情节提要中的 ViewController2,但我不想那样做。我想在 MyViewController1 中做一个方法。例如,在我的 viewDidLoad 方法中。

非常感谢任何帮助。谢谢

【问题讨论】:

标签: ios objective-c uiviewcontroller


【解决方案1】:

如果您尝试将 ViewController2 管理的视图嵌入到 ViewController1 管理的视图中,您可以通过将 UIContainerView 添加到 ViewController1 并使用指向 ViewController2 的嵌入 segue 来实现。

这很有用,例如,如果您有一个由 ViewController2 管理的可重用视图并希望在多个地方使用它。

您可以在 InterfaceBuilder 中通过将 UIContainerView 从 Object 库拖到 ViewController1 的视图上来执行此操作。然后,您可以将它创建的视图控制器的类更改为 ViewController2。

【讨论】:

    【解决方案2】:

    在情节提要中创建从 vc1 到 vc2 的 segue,为其命名并调用:

     [self performSegueWithIdentifier: @"mySegueCustomName" sender: self];
    

    【讨论】:

      【解决方案3】:

      不要混淆视图和视图控制器。您发布的标题表明您还没有完全根深蒂固。

      如果您想以编程方式呈现另一个视图控制器,那么只需为按钮创建一个操作方法并在那里执行。 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];
      } 
      

      【讨论】:

      • ViewController 在 Storyboard 中,所以这行不通。他需要developer.apple.com/library/ios/documentation/UIKit/Reference/…:
      • @RatulSharker OP 没有说它在故事板中。
      • 问题是“情节提要中的 ViewController2”。这就是为什么我建议[故事板实例化.....
      • @RatulSharker “在故事板中,但我不想那样做”
      • 我猜他的意思是不使用情节提要的 segue :),仍然将 Viewcontroller2 保留在情节提要中。
      猜你喜欢
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 2014-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-25
      • 2012-01-12
      相关资源
      最近更新 更多