Переопределение внутренних методов UIViewController, потому что внутренний метод дает мне ошибки - PullRequest
2 голосов
/ 14 сентября 2010

Каковы последствия переопределения внутренних методов UIViewController?

[UIViewController viewDidMoveToWindow:shouldAppearOrDisappear:] доставляет мне некоторые проблемы. Он изменяет размер моего кадра до значений, которые я не желаю иногда . Я даже не знаю, где он выбирает значения нового кадра (он близок к размеру суперпредставления, к которому я его добавляю, но отключен на 2 пикселя). Ссылка: этот вопрос, с которым мне также нужна помощь.

Я попытался определить пустой метод - (void)viewDidMoveToWindow:(UIWindow *)window shouldAppearOrDisappear:(BOOL)flag в моем контроллере представления. Ошибка ушла. >. <</p>

Кто-нибудь знает, можно ли переопределить -viewDidMoveToWindow:shouldAppearOrDisappear:? Или какой-то другой обходной путь?

Или кто-нибудь знает, когда и почему -viewDidMoveToWindow:shouldAppearOrDisappear: любит изменять размеры моего кадра иногда ?

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 16 июня 2011

Для части «почему» вашего вопроса;кадр может автоматически изменяться в двух ситуациях:

  1. Ваш ViewController является частью иерархии контроллера представления (Navigation или TabBar).В этом случае ваши родительские ViewControllers делают так, как им нравится, с вашей рамкой представлений.
  2. Ваш вид позволяет изменять размер, а родительский вид меняет размер.Здесь следует отметить, что размер корневого представления изменяется в соответствии с размером экрана, что приводит к автоматическому изменению размера для всех подпредставлений.

Чтобы найти точного виновника в вашем случае, вы можете установить точку останова.в переопределенном setFrame:.

2 голосов
/ 14 сентября 2010

Если вы переопределите этот метод, вы рискуете получить отказ, он будет недокументирован. Подход, который не противоречит правилам, заключается в переопределении метода setFrame: представления в контроллере представления.

Если вы считаете, что это ошибка, соберите минимальный тестовый пример и отправьте его в http://bugreport.apple.com и, возможно, загрузите его куда-нибудь, чтобы мы могли точно видеть, что происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...