Контроллер моего представления настроен на загрузку представления из файла Nib. В какой-то момент в viewDidAppear
я могу изменить self.view
, и вид может исчезнуть, в следующий раз viewDidAppear
Я могу решить загрузить оригинальный вид из наконечника, как бы я это сделал?Как заставить UIViewController повторно загружать представление?
ответ
Один из способов сделать это, чтобы просто повторно инициализировать контроллер объекта собственности в viewDidAppear:
[self setMySubViewController:[[[MySubViewController alloc] initWithNibName...] autorelease]];
Ваша собственность mySubViewController выпустит предыдущую копию контроллера представления и сохранить новый.
Надеюсь, это поможет.
Хмм .. Я не понимаю, как это будет работать в моем случае. У меня 1 контроллер, нет подсмотров. Я бы назвал self initWithNibName, но я думаю, что это не так. Необходимо восстановить все точки продаж самостоятельно. – Pablo
Вы не можете ссылаться на свой контроллер в контроллере контейнера, а затем делегаты уведомляют контроллер контейнера о повторной инициализации вашего представления дочернего контроллера? – MyCSharpCorner
Нет дочернего контроллера. Существует только 1 контроллер и 2 файла nib. Мне нужно изменить представление в viewDidLoad. Владелец файла этих 2 наконечников является одним и тем же контроллером. – Pablo
Ugh. Не меняйте self.view; вставлять вещи в подзаголовки и скрывать/удалять подзоны по мере необходимости. Если вы расскажете нам об увеличенной картине, мы сможем помочь больше. –
Если вам кажется трудно, вы, вероятно, ошибаетесь. В каких условиях вы хотите, чтобы различные представления были представлены? Если вы используете наконечники, то подходящее время для переключения ниба при вызове initWithNibNamed: bundle: animated: – falconcreek
есть причина, по которой вы не можете загрузить новый контроллер представления и представить модально? представит UIAlertView решение проблемы? (NB: мой предыдущий комментарий начинается с перефразирования строки из книги Cocoa от Hillegass. Не было совершено никакого преступления) – falconcreek