我是 iOS 开发新手。我有一个带有 2 个 View Controller 的 Storyboard,我将它们链接到 UIViewController 类,当我尝试从第一个类加载第二个类时它起作用(就像进入主菜单的启动画面)但是“菜单”没有从 Storyboard加载 View 。它加载黑屏。我已将类分配给 Storyboard右侧边栏中的 viewcontroller,并将屏幕涂成红色以查看它是否加载类,确实如此,但如果我去掉红色,它会加载黑屏,而不是所需的屏幕来自 Storyboard。
屏幕 1(启动画面)的代码:
func switchScreen() {
let secondViewController:vcMainLogin = vcMainLogin()
self.presentViewController(secondViewController, animated: true, completion: nil)
}
override func viewDidLoad() {
super.viewDidLoad()
NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: "switchScreen", userInfo: nil, repeats: false)
}
屏幕 2(登录/菜单)的代码:
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor.redColor()
// Do any additional setup after loading the view.
}
它正在加载,因为屏幕的颜色变成了红色,但是当我把它拿出来时,它加载的是黑色,而不是 Storyboard中的屏幕。
最佳答案
您需要从 Storyboard 中实例化 View Controller ,而不是通过初始化函数创建它。为此,您需要在界面生成器中为 View Controller 分配一个 Storyboard ID( View -> 实用程序 -> 身份检查器)。在此示例中,我从名为“MainStoryboard”的 Storyboard加载了一个 Storyboard ID 为“VC2”的 View Controller 。
let mainStoryboard = UIStoryboard(name: "MainStoryboard", bundle: NSBundle.mainBundle())
let vc : UIViewController = mainStoryboard.instantiateViewControllerWithIdentifier("VC2") as UIViewController
这里是等效的 objective-c 代码供引用
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"mainStoryboard" bundle:[NSBundle mainBundle]];
UIViewController *vc = [mainStoryboard instantiateViewControllerWithIdentifier:@"VC2"];
关于ios - View Controller 未加载 Storyboard View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24343293/