iOS / Xcode - drawRect: не вызывается в подклассе UIView - PullRequest
1 голос
/ 09 марта 2012

Я работаю над приложением, основным видом которого является UITabViewController. Под UITabViewController входят три UIViewController и один UITableViewController. Под одним из UIViewControllers находится UIView и объект NSObject, который соответствует NSXMLParserDelegate. Вот схема структуры на высоком уровне: AppDelegate: UIResponder UIViewController1 & xib UIViewController2 & xib UIViewController3 & xib UIView (CG звонки здесь) NSXMLParser UITableViewController & xib

XIB UIViewController имеет выход к UIView. Экземпляр UIView выделяется и init'd в UIViewController. Затем UIView выделяет и инициализирует NSXMLParser, загружает данные, выполняет рисование и выполняет [self setNeedsDisplay]. Приложение компилируется без ошибок, и я убедился, что данные XML загружаются и анализируются правильно.

Проблема в том, что drawRect: в UIView вызывается, когда UIView инициализируется, но больше никогда. При вызове drawRect: данные еще не загружены, поэтому ничего не рисуется. Я убедился, что вызывается [self setNeedsDisplay], но drawRect: больше никогда не вызывается.

У кого-нибудь есть идеи, почему drawRect: вызывается только один раз? Спасибо.

1 Ответ

0 голосов
/ 29 апреля 2012

У вас работает какой-то код, возможно, связанный с вашим XML-парсером, который блокирует основной поток? Если это так, обновления пользовательского интерфейса не произойдут до следующей итерации цикла выполнения.

Вы можете принудительно выполнить итерацию цикла выполнения, вызвав:

[[NSRunLoop currentRunLoop] runMode: NSDefaultRunLoopMode beforeDate: [NSDate date]];

Более подробную информацию можно найти на этот ответ .

...