Какие свойства UIViewController я должен установить в -initWithNibName: bundle: vs. -viewDidLoad? - PullRequest
0 голосов
/ 05 сентября 2011

Я понимаю, что должен установить self.title в -initWithNibName:bundle:.

  1. А как насчет self.navigationItem.titleView?

    Поскольку self.navigationItem.titleView, по-видимому, используется только при загрузке self.view, я думаю, что для экономии памяти необходимо установить self.navigationItem.titleView в -viewDidLoad и ноль в -viewDidUnload, например:

    - (void)viewDidLoad {
        [super viewDidLoad];
        self.navigationItem.titleView = [[UIImageView alloc] initWithImage:
                                         [UIImage imageNamed:@"logo.png"]];
    }
    
    - (void)viewDidUnload {
        self.navigationItem.titleView = nil;
        [super viewDidUnload];
    }
    
  2. А как же self.navigationItem.backBarButtonItem?

1 Ответ

1 голос
/ 05 сентября 2011
  1. Кажется, все в порядке, чтобы установить self.navigationItem.titleView в -viewDidLoad и ноль в -viewDidUnload.

  2. Вы должны установить self.navigationItem.backBarButtonItem в -initWithNibName:bundle, потому что если вы нажмете два контроллера представления без анимации, -viewDidLoad не будет вызван для первого выдвинутого контроллера представления. Таким образом, если этот контроллер представления устанавливает self.navigationItem.backBarButtonItem в -viewDidLoad, он фактически не будет установлен, и кнопка «Назад» на втором контроллере представления будет просто по умолчанию использовать заголовок первого контроллера представления.

...