2014-11-02 62 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

相关问题