【问题标题】:How to go from one view controller in One storyboard to another viewcontroller in another storyboard programmatically?如何以编程方式从一个故事板中的一个视图控制器转到另一个故事板中的另一个视图控制器?
【发布时间】:2017-12-15 04:37:45
【问题描述】:

我在 Storyboard 中有一个名为“X”的视图控制器 A,其中我有一个按钮。单击它时,我正在检查 API 的成功响应,之后我需要导航到情节提要 "B" 中的视图控制器 B。

我正在使用代码:

let loginstoryboard = UIStoryboard(name: "Login", bundle: nil)
let loginController = loginstoryboard.instantiateViewController(withIdentifier: "login") as? LoginViewController
self.navigationController?.pushViewController(loginController!, animated: true)

所以它不适合我。有什么问题?

【问题讨论】:

  • 检查情节提要和视图控制器标识符名称是否正确
  • 添加调用 API 和处理响应的代码
  • 视图控制器A是否属于Storyboard中的NavigationController?
  • 检查是否没有像loginstoryboard、logincontroller和navigationcontroller这样的nil,如果你在后台线程中调用API,那么把上面的代码放在主线程中

标签: ios iphone xcode swift3


【解决方案1】:

请按照以下步骤操作。

  1. 检查您的两个视图控制器 StoryboardID(如果 Storyboard ID 已插入,则跳过第 2 步)。
  2. 插入视图控制器StoryboardID

请查看 StoryboardID 的示例图片

示例代码

   UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:"YourStoryBoardName" bundle:nil];
   UIViewController  *loginViewController = [storyBoard instantiateViewControllerWithIdentifier:"LoginViewController"];
   // If Login View Controller is not a Navigation Controller then you need to create Navigation Controller
   UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:loginViewController];
   [self.navigationController pushViewController:viewController animated:true];

【讨论】:

    【解决方案2】:

    您可以在下面以编程方式创建故事板的引用,然后使用其故事板 ID 实例化视图控制器。

     let loginstoryboard = UIStoryboard(name: "Login", bundle: nil)
    

    在故事板中 您甚至可以在外部故事板中引用视图控制器。详细说明请参阅 @bshirley ans。

    【讨论】:

      猜你喜欢
      • 2018-12-12
      • 1970-01-01
      • 2019-12-17
      • 2013-02-03
      • 2013-12-21
      • 2013-09-17
      • 2015-05-02
      • 1970-01-01
      • 2012-11-13
      相关资源
      最近更新 更多