2014-11-02 60 views
2

我開始使用swiftSWIFT 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的正確方法?我應該在哪裏放置我的視圖控制器的所有設置?某些設置的負載太晚了。

+4

它在哪裏崩潰?是否有例外消息?到目前爲止,你有什麼試圖[調試](http://ericlippert.com/2014/03/05/how-to-debug-small-programs/)? – 2014-11-02 18:47:01

+0

你是如何嘗試實例化這個視圖控制器?在賽格?在代碼中? – Abizern 2014-11-02 18:49:49

+0

(lldb)我對調試器不太好,但我認爲它在nib的初始化時崩潰了。我啓動了Xcode 6.1並開啓了一個新項目TabBarController,在故事板中我有我的2個視圖控制器......並且這是第二個代碼......這就是我所做的全部 – Marianna 2014-11-02 18:53:42

回答

6

您正在通過調用super.init()創建一個循環,您應該在那裏調用init(nibName:nibBundleOrNil)init()的超級實現調用您的方法,該方法又調用super init。

+0

它的工作!你能更好地解釋我爲什麼這麼好嗎?我試圖把也super.init(編碼器:aDecoder)在init(編碼器)內,它永遠不會調用nib的init ...我迷路了因爲Xcode總是要我使用init(編碼器) – Marianna 2014-11-02 20:50:13

+0

那麼一般來說,當你正在重寫一個函數,對super的調用應該使用相同的簽名(如果你沒有將nib名稱和包名稱丟失)。哪一個初始化器被調用取決於你如何實例化你的類或筆尖 – 2014-11-02 20:53:46

+0

謝謝lotBob :) – Marianna 2014-11-02 20:59:03

相關問題