在swift中从UINavigationController派生时,一些看似毫无用处的瑕疵

时间:2015-12-16 11:11:39

标签: uinavigationcontroller swift2

为什么我需要这么多(看似无用的)传递objc没有的代码 需要类似的推导:

sshd

为我从xib加载的每个视图控制器重复广告。

1 个答案:

答案 0 :(得分:2)

如果您不想重载指定的初始化程序init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) UINavigationController子类,那么这不应该是一个问题。如果您只想使用默认(超级)初始值设定项,则可以从类中删除这两种方法。

即,以下课程

// MyNavigationController.swift
import UIKit

class MyNavigationController: UINavigationController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // I don't want to make use of this ...
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // ... nor this
    }

    // Things I do want to do with my nav. controller
}

可以缩减为

// MyNavigationController.swift
import UIKit

class MyNavigationController: UINavigationController {

    // Things I do want to do with my nav. controller
}

没有任何错误。 (在Swift 2.0,Xcode 7.2,模拟器:iOS 9.2中验证)。这是预期的行为,参见例如线程'required' initializer 'init(coder:)' must be provided by subclass of 'UITableViewCell'`中接受的答案。

如果在为此子类类型删除这些类型时仍然出现错误,请提供有关您使用类/ Xcode版本等的一些详细信息。