SWIFT uiviewcontroller init
问题描述:
我开始使用swift。SWIFT uiviewcontroller init
与objective-C当我可以避免使用故事板时,初始化视图控制器很容易。我只会创建一个UIViewController
子类,并且我会将所有初始化代码放入 initWithNibName
。
现在故事板我迷路了。我创建了一个UIviewController
子类,我尝试添加init
(笔尖名称)和init
(编码器),但它崩溃。
这是我的代码
//
// 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
的正确方法?我应该在哪里放置我的视图控制器的所有设置?某些设置的负载太晚了。
答
您正在通过调用super.init()
创建一个循环,您应该在那里调用init(nibName:nibBundleOrNil)
。 init()
的超级实现调用您的方法,该方法又调用super init。
它在哪里崩溃?是否有例外消息?到目前为止,你有什么试图[调试](http://ericlippert.com/2014/03/05/how-to-debug-small-programs/)? – 2014-11-02 18:47:01
你是如何尝试实例化这个视图控制器?在赛格?在代码中? – Abizern 2014-11-02 18:49:49
(lldb)我对调试器不太好,但我认为它在nib的初始化时崩溃了。我启动了Xcode 6.1并开启了一个新项目TabBarController,在故事板中我有我的2个视图控制器......并且这是第二个代码......这就是我所做的全部 – Marianna 2014-11-02 18:53:42