1. ホーム
  2. ios

[解決済み] なぜSwiftでUIViewControllerのデフォルトのsuper.init()を呼び出すことができないのでしょうか?

2022-02-14 04:27:20

質問

を使用していません。 UIViewController ストーリーボードから、カスタムの init 関数に渡すことができます。 NSManagedObjectID を使用します。私はただ super.init() Objective-Cのときと同じように。こんな感じで。

init(objectId: NSManagedObjectID) {
    super.init()
}

しかし、以下のようなコンパイラーエラーが発生します。

スーパークラス UIViewController の指定イニシャライザーを呼び出す必要があります。

これ以上やらないようにすればいいのでしょうか?

解決方法は?

に指定されたイニシャライザーは UIViewControllerinitWithNibName:bundle: . 代わりにそれを呼び出す必要があります。

参照 http://www.bignerdranch.com/blog/real-iphone-crap-2-initwithnibnamebundle-is-the-designated-initializer-of-uiviewcontroller/

ペン先がない場合は nil を nibName に指定します (bundle もオプションです)。そうすると、カスタムビューを loadView にサブビューを追加することで、または self.viewviewDidLoad は、以前と同じです。