Как инициализировать представление, имеющее initWithCoder: метод

#iphone #uiview #uiviewcontroller #nscoder #autorotate

#iPhone #uiview #uiviewcontroller #nscoder #автозапуск

Вопрос:

У меня есть представление, которое инициализируется с помощью — (id)initWithCoder:(NSCoder *)aDecoder Как мне инициализировать это представление в viewController ?

Я думаю, мне нужен, viewController если я хочу, чтобы представление было autoRotate с устройством. Я не уверен, может быть, я мог бы выполнить autoRotation без viewController ?

Добавление наблюдателя и shouldAutorotateToInterfaceOrientation: в представление не привело к автоматическому вращению представления. Но когда я также добавляю

 -(void) orientationChanged:(NSNotification *) notification 
{
    NSLog(@"orientationChanged: %d", [[notification object] orientation]);
} 
  

Я получаю значение ориентации в окне моей консоли.

Любая помощь была бы высоко оценена.

Ответ №1:

initWithCoder: предназначен для управления сериализованными объектами. Вы никогда не вызываете его напрямую. Объект с initWithCoder: методом все равно должен иметь обычный назначенный инициализатор (для представления это было бы initWithFrame: ). Однако, как правило, я рекомендую использовать файл nib, а не пытаться создавать этот материал вручную. Это значительно упрощает работу, и загрузка из файла nib вызовет initWithCoder: .

Управлять автоповоротом с помощью контроллера представления намного проще. Это не обязательно, но оно выполняет часть работы за вас.

Комментарии:

1. Большое спасибо за вашу помощь. Я использовал метод initWithFrame:, и все работает отлично. Мне просто нужно было немного подтолкнуть.