UIView обновляется, когда это tableHeaderView, но не когда это подвид

У меня есть собственный UIView, содержащий TableView. Над столом я планирую разместить некоторые другие предметы. Пока мне просто нужна кнопка.

Я создаю UIView 'headerView' и добавляю к нему кнопку. Сама кнопка просто настроена так, чтобы обновлять ее заголовок при нажатии.

Если я добавлю заголовок к табличному представлению как tableHeaderView, он будет работать нормально.

Если я добавлю заголовок выше представления таблицы в качестве родственного подпредставления, оно отображается правильно, но заголовок кнопки не обновляется.

Я проверил через журнал, что вызывается метод для обновления метки кнопки, но представление, похоже, нуждается в обновлении.

С чего бы это? Я пропустил что-то простое.

Код, которому нужно следовать, если это поможет.

Примечание. Я не использую IB ни для чего из этого.

Обновление: я сократил его до одной строки. Когда я устанавливаю рамку табличного представления, которую я добавляю под headerView, я устанавливаю origin.y в headerView.size.height. Если я изменю это, чтобы использовать жестко закодированный номер (даже того же значения), кнопка обновится.


person Ben Packard    schedule 15.05.2012    source источник


Ответы (1)


Трудно диагностировать проблему без кода, но вот несколько распространенных проблем/решений, которые могут помочь.

  1. Используйте [button setTile:forState:] вместо button.titleLabel.text
  2. Убедитесь, что вы не пропустили никаких вызовов layoutSubviews, вызвав setNeedsLayout и/или layoutIfNeeded для соответствующего представления.
  3. Убедитесь, что у вас есть правильные имена селекторов, привязанные к правильной цели с правильным событием управления.

Похоже, поскольку в некоторых случаях это работает, проблема не в 1 и 3. Кроме того, поскольку он работает, когда вы устанавливаете размер по-другому, он может быть равен 2. Табличное представление будет правильно вызывать методы макета для своего представления заголовка, что может быть причиной того, что оно работает как представление заголовка таблицы, а не как обычный родственный элемент.

person Matt    schedule 15.05.2012