Мне сложно понять поток UITableViewController. В основном вот моя структура:heightForRowAtIndexPath всегда называется дважды
У меня есть tableViewController, который, конечно же, размещает tableView. И здесь я использую getCellContentView и cellForRowAtIndexPath для выполнения всей работы, связанной с моими ячейками. У моей ячейки несколько UILabels с собственными кадрами, по одному для каждой ориентации. Я обнаруживаю и выполняю все изменения ориентации и правильно перерисовывает рамку. Нет проблем. Все идет нормально.
Теперь мне нужна высотаForRowAtIndexPath, чтобы вернуть 100 для пейзажа и сказать 200 для портретной ориентации. Моя проблема заключается в том, что когда я NSLog внутри нее, метод вызывается дважды по какой-либо причине, когда я поворачиваю tableView. Кто-нибудь знает, почему метод дважды запускается при вращении? Я думал, что -reloadData может быть проблемой, и я подтвердил, что я вызывал -reloadData при вращении дважды как-то, но нет. Я вызываю -reloadData только один раз внутри метода willRotateToInterfaceOrientation и нигде в коде не вызывается (кроме внутреннего вызова viewDidLoad).
Почему высотаForRowAtIndexPath вызывается дважды в каждом событии поворота? Также кажется, что heightForRowAtIndexPath также не может правильно определить ориентацию при включении вращения. Я использую свойство ориентации панели состояния, чтобы проверить, что внутри heightForRowAtIndexPath возвращает соответствующую высоту ячейки. Любая помощь была бы потрясающей!
Г-н deanWombourne, я люблю тебя (предупреждение, непроверенных и напечатал из памяти!)! Работал! Теперь я читаю о внутренних функциях вращения, чтобы выяснить, почему таблица отображается дважды (как если бы выполнялись два вызова reloadData). – user511872 2010-12-17 08:17:38