【发布时间】:2021-01-31 06:49:26
【问题描述】:
我创建了一个应用程序,其中有两组 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.
}
}
借助它的 Storyboard,我还为标签栏控制器添加了自己:
我已将这些添加到单独的文件中,以获得更清晰的文件层次结构(例如,为登录页面提供故事板和视图控制器,以及在用户进入应用程序时使用新的故事板和标签栏控制器)。当我单击主页故事板上的“输入应用程序”按钮时,应用程序崩溃并出现以下错误:
'NSInvalidArgumentException', reason: 'Storyboard (<UIStoryboard: 0x600002901f80>) doesn't contain a view controller with identifier 'CottageTabsView''
我确保在检查器中添加 Storyboard ID 和 Restoration ID 并将它们包含在按钮的操作方法中,但无论我尝试什么似乎都无法使其工作。我希望应用程序从 Home.storyboard 和 HomeController 加载到 CottageTabsController 和 CottageTabs.storyboard。
谢谢!
【问题讨论】:
-
可以给项目导航器截图吗?
-
另外,你还在用
HomeController吗?我在故事板中没有看到它 -
@aheze 我已经添加了它,一旦我点击
HomeController上的按钮,我想改用CottageTabBarsController,就像从一个导航到另一个。抱歉,如果我的条款不正确,我是 iOS 新手,正在努力改进它! -
Np。尝试将
Home替换为CottageTabs,因为您将CottageTabsController移到了它自己的情节提要中。请参阅下面的答案
标签: ios swift xcode storyboard