Which initializer(s) to override for UITableViewController subclass

后端 未结 5 1094
滥情空心
滥情空心 2020-12-28 18:05

I have a UITableViewController subclass that\'s instantiated, depending on where it\'s used, in a NIB or via code. In both cases I want to do customization in

5条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2020-12-28 18:56

    My confusion was based on the mistaken belief that each class should have a single designated initializer. This is not true, and in the case of UITableViewController there are 3 designated initializers (as far as I can tell):

    1. initWithStyle: declared locally
    2. initWithNibName:bundle: inherited from UIViewController
    3. initWithCoder: from adopting NSCoding protocol

    You need to override 1 or more of these in your subclass depending on how your subclass gets instantiated. In my case I had to implement #2 and #3 since the class can be loaded from a NIB, or instantiated via code with reference to a NIB. (I imagine it's rare that you'll use both initWithStyle: and initWithNibName:bundle: for a single class.)

    I found Apple's Coding Guidelines for Cocoa helpful.

提交回复
热议问题