【发布时间】:2014-11-02 18:43:55
【问题描述】:
我开始使用 Swift。
当我可以避免使用故事板时,使用 Objective-C,初始化视图控制器很容易。我只需创建一个UIViewController 子类,然后将所有初始化代码放入其中
initWithNibName.
现在有了故事板,我迷路了。我创建了一个UIviewController 子类,我尝试添加init(nib name) 和init(coder) 但它崩溃了。
这是我的代码:
//
// SecondViewController.swift
// tabTestWithSwift
//
// Created by Marianna Ruggieri on 02/11/14.
// Copyright (c) 2014 Marianna Ruggieri. All rights reserved.
//
import UIKit
class FirstViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
println("init with nib")
super.init()
tabBarItem.title = "test"
}
required init(coder aDecoder: NSCoder) {
//fatalError("init(coder:) has not been implemented")
print("init coder")
super.init()
}
}
看这个截图: http://oi62.tinypic.com/10ogwsh.jpg
编辑:我没有做任何特别的事情。启动了一个TabBar 项目并编辑了视图控制器,如您在上面的代码中所见。就是这样!!!!
如果我使用情节提要,初始化UIViewController 的正确方法是什么?我应该将视图控制器的所有设置放在哪里?对于某些设置,加载为时已晚。
【问题讨论】:
-
它在哪里崩溃?有异常消息吗?到目前为止,您对debug 有什么尝试?
-
你是如何尝试实例化这个视图控制器的?在转场?在代码中?
-
(lldb) 我不擅长调试器,但我认为它会在 nib 的初始化时崩溃。我启动了 Xcode 6.1 并打开了一个新项目 TabBarController,在故事板中我有我的 2 个视图控制器......这是第二个的代码......这就是我所做的一切
-
1.你的
init方法在这里不是必需的,除非你在那里做任何材料,你不是(title的设置可以移动到viewDidLoad)。 2. 问题不在于上面的代码,而在于你如何实例化这个视图控制器。向我们展示创建/使用此视图控制器的代码和/或告诉我们您是如何配置故事板的。当您说“它崩溃了”时,这并不能提供太多信息:您必须告诉我们完整的错误消息是什么! -
这是我的错误屏幕i61.tinypic.com/2vmzdco.png
标签: ios swift uiviewcontroller initialization