Почему метод init подкласса UIViewController иногда не загружает файл nib с тем же именем? - PullRequest
1 голос
/ 24 октября 2011

Я знаю, что назначенный инициализатор UIViewController -

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

Если вы позвоните init, в соответствии с документацией он загрузит файл пера с тем же именем класса (если он существует).

Но я столкнулся с тем, что иногда init делает все правильно. Но иногда метод init некоторого подкласса UIViewController просто не загружает его nib-файл. Я создаю их тем же способом (используя помощника Xcode для создания подкласса UIViewController и связанного с ним файла nib одновременно, поэтому имя файла должно быть одинаковым).

Почему это происходит?

1 Ответ

1 голос
/ 25 октября 2011

Я выяснил, что если класс является подклассом UITableViewController, вы должны использовать - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil начать с кончика.

Это потому, что назначенный инициализатор UIViewController:

(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

, поэтому, если вы используете init, он будет вызывать (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil для вас.

Но назначенный инициализатор UITableViewController:

- (id)initWithStyle:(UITableViewStyle)style

использование init в UITableViewController вызовет initWithStyle, а не initWithNibName

...