2016-01-26 4 views
0

У меня очень своеобразная ситуация и вы хотите знать, почему это происходит. У меня есть окно редактирования и кнопка в представлении, которое я ввел в свойство tableHeaderView таблицы. Я называю это представление InputToListCell.UIView не заполняет стол виды tableHeaderView свойство swift

Теперь, когда представление проходит UIView я получаю следующее:

enter image description here

т.е. все, что я изменить в коде:

class InputToListCell: UIView{ 
    //Code Here 
} 

Я тогда изменить InputToListCell расширить UITableViewCell и получить следующие:

enter image description here

т.е.

class InputToListCell: UITableViewCell{ 
    //Code Here 
} 

Почему такое поведение происходит? Я не могу понять, почему UITableViewCell расширяет UIView. Есть предположения?

Update:

на основе комментария, сделанного здесь ограничения для InputToListCell:

enter image description here

Я в основном пин-код и редактирования текста и добавить на кнопки ограничения на полях, за исключением отредактируйте текущее значение текста.

+0

Может быть связано с тем, как ваши ограничения Autolayout установлены на InputToListCell. Можете ли вы обновить свой вопрос с некоторой информацией об этом? – hgwhittle

+0

Pleasa добавляет реализацию метода cellForRowAtIndexPath и ограничений для подкатегорий ячеек – shpasta

+0

Было ли предлагаемое решение работать не для вас? – SwiftArchitect

ответ

0

Короче

UITableViewCell Используйте для просмотра таблицы элементов.

self.tableView.tableHeaderView = 
    tableView.dequeueReusableCellWithIdentifier("sectionIdentifier") 

Обсуждение

Использование UITableViewCell объектов для все просмотра таблицы элементов, не только обеспечивает поведение зонтика при представлении внутри UITableView, но также позволяет производить загрузку из .storyboard или .xib, добавленных бонус и сплоченность.

Таким образом, несмотря на то, tableHeaderViewviewForHeaderInSection по этому вопросу) является неофициально просто UIView, вы можете вернуть UITableViewCell.По this post, чтобы воспользоваться Autolayout в tableHeaderView, что вам нужно сделать немного гимнастики:

if let tableHeaderView = tableView.dequeueReusableCellWithIdentifier("tableHeaderViewIdentifier") { 
    tableHeaderView.setNeedsLayout() 
    tableHeaderView.layoutIfNeeded() 

    let height = tableHeaderView.systemLayoutSizeFittingSize(UILayoutFittingCompressedSize).height 
    var frame = tableHeaderView.frame 

    frame.size.height = height 
    tableHeaderView.frame = frame 
    self.tableView.tableHeaderView = tableHeaderView 
} 

С другой пост:

Two Section Headers


Для полного пример о том, как использовать .storyboard или .xib для заголовков, включая проект Xcode, см. https://stackoverflow.com/a/32261262/218152

Смежные вопросы