setNeedsDisplay работает на iPhone, но не на iPad

Рассматриваемое представление было создано в IB в корневом представлении и подключено к методу класса в rootViewController. В методе класса представления я переопределяю drawRect, чтобы отрисовывать его содержимое. Я вызываю setNeedsDisplay для представления из rootViewController после того, как пользователь изменил некоторые параметры.

На айфоне это работает нормально. Однако на iPad метод drawRect в классе не вызывается.

Я подозреваю, что причина этого связана с циклом рисования. На iPhone представление, используемое пользователем для изменения параметров, выталкивается на экран поверх рассматриваемого представления. На iPad этот вид добавляется к основному виду выше, а не поверх рассматриваемого вида. Таким образом, когда вид, используемый для изменения параметров, закрывается, в отличие от iPhone, цикл рисования не создается, и недействительный вид не обновляется.

Я застрял. Любая помощь будет оценена.


person user278859    schedule 04.11.2011    source источник


Ответы (1)


Нашел проблему...

Я обнаружил, что в xib, используемом корневым контроллером представления для iPad, проводка для рассматриваемого объекта UIView была несколько повреждена. Когда я наводил курсор на пулю его переменной iIBOutlet в файле .h, UISegmentedControl в другом месте xib был выбран вместо предполагаемого UIView. Щелчок правой кнопкой мыши на UISegmentedControl не показал, что ссылка существует. Единственный способ, которым я смог это исправить, — удалить всю проводку с обоих объектов и правильно их подключить. Вызов setNeedsDisplay теперь работает. как и ожидалось, на iPad точно так же, как и на iPhone.

person user278859    schedule 08.11.2011