使用不同的 Storyboard 从一个 ViewController 导航到一个新的 ViewController
Navigating from one ViewController to a new ViewController with a different Storyboard
我创建了一个应用程序,其中有两组 ViewControllers/Storyboards。我想从原来的 ViewController/Storyboard 开始,然后在按下按钮后加载另一个 ViewController/Storyboard。我尝试了不同的方法,例如 this 答案,但无法弄清楚。
这是第一个ViewController的代码:
import UIKit
class HomeController: UIViewController {
@IBAction func enterCottageBuddyApp(_ sender: Any) {
let storyBoard : UIStoryboard = UIStoryboard(name: "Home", bundle:nil)
let nextViewController = storyBoard.instantiateViewController(withIdentifier: "CottageTabsView") as!
CottageTabsController
self.present(nextViewController, animated:true, completion:nil)
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
}
这是故事板:
这是 Main.storyboard,但我决定将其重命名为 Home.storyboard(我已更新 info.plist 以反映此更改,并且此故事板已正确加载)。
这是我自己创建的单独的 ViewController (UITabBarController):
import UIKit
class CottageTabsController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
}
通过故事板,我也为标签栏控制器添加了自己:
我在单独的文件中添加了这些文件以获得更清晰的文件层次结构(例如为登录页面提供故事板和 viewcontroller 以及用户进入应用程序后的新故事板和 tabbarcontroller) .当我单击主页故事板上的“输入应用程序”按钮时,应用程序崩溃并出现错误:
'NSInvalidArgumentException', reason: 'Storyboard (<UIStoryboard: 0x600002901f80>) doesn't contain a view controller with identifier 'CottageTabsView''
我确保在检查器中添加故事板 ID 和恢复 ID,并将它们包含在按钮的操作方法中,但无论我尝试什么,我似乎都无法使其工作。我希望应用程序从 Home.storyboard 和 HomeController 转到加载 CottageTabsController 和 CottageTabs.storyboard.
谢谢!
CottageTabsController
在它自己的情节提要中,因此您需要将 UIStoryboard(name: "Home", bundle: nil)
替换为 UIStoryboard(name: "CottageTabs", bundle: nil)
。
@IBAction func enterCottageBuddyApp(_ sender: Any) {
let storyBoard : UIStoryboard = UIStoryboard(name: "CottageTabs", bundle:nil) /// <- Different storyboard!
let nextViewController = storyBoard.instantiateViewController(withIdentifier: "CottageTabsView") as!
CottageTabsController
self.present(nextViewController, animated:true, completion:nil)
}
我创建了一个应用程序,其中有两组 ViewControllers/Storyboards。我想从原来的 ViewController/Storyboard 开始,然后在按下按钮后加载另一个 ViewController/Storyboard。我尝试了不同的方法,例如 this 答案,但无法弄清楚。
这是第一个ViewController的代码:
import UIKit
class HomeController: UIViewController {
@IBAction func enterCottageBuddyApp(_ sender: Any) {
let storyBoard : UIStoryboard = UIStoryboard(name: "Home", bundle:nil)
let nextViewController = storyBoard.instantiateViewController(withIdentifier: "CottageTabsView") as!
CottageTabsController
self.present(nextViewController, animated:true, completion:nil)
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
}
这是故事板:
这是 Main.storyboard,但我决定将其重命名为 Home.storyboard(我已更新 info.plist 以反映此更改,并且此故事板已正确加载)。
这是我自己创建的单独的 ViewController (UITabBarController):
import UIKit
class CottageTabsController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
}
通过故事板,我也为标签栏控制器添加了自己:
我在单独的文件中添加了这些文件以获得更清晰的文件层次结构(例如为登录页面提供故事板和 viewcontroller 以及用户进入应用程序后的新故事板和 tabbarcontroller) .当我单击主页故事板上的“输入应用程序”按钮时,应用程序崩溃并出现错误:
'NSInvalidArgumentException', reason: 'Storyboard (<UIStoryboard: 0x600002901f80>) doesn't contain a view controller with identifier 'CottageTabsView''
我确保在检查器中添加故事板 ID 和恢复 ID,并将它们包含在按钮的操作方法中,但无论我尝试什么,我似乎都无法使其工作。我希望应用程序从 Home.storyboard 和 HomeController 转到加载 CottageTabsController 和 CottageTabs.storyboard.
谢谢!
CottageTabsController
在它自己的情节提要中,因此您需要将 UIStoryboard(name: "Home", bundle: nil)
替换为 UIStoryboard(name: "CottageTabs", bundle: nil)
。
@IBAction func enterCottageBuddyApp(_ sender: Any) {
let storyBoard : UIStoryboard = UIStoryboard(name: "CottageTabs", bundle:nil) /// <- Different storyboard!
let nextViewController = storyBoard.instantiateViewController(withIdentifier: "CottageTabsView") as!
CottageTabsController
self.present(nextViewController, animated:true, completion:nil)
}