2015-08-01 5 views
1

Я создал TableView с прототипами ячеек; в первой позиции Tableview Я сделал этоСделать таблицуHeaderView не прокруткой

override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { 
    if section == 0 
    { 
     let view : UIView = UIView(frame: CGRectMake(0, 0, 400, 140)) 
     view.backgroundColor = UIColor.redColor() 
     view.addSubview(populateView()) 
     //populateView() is a method by which I programmatically made all object in the view (label, images, textView) 
     return view 
    } 
    else 
    { 
     return nil 
    } 
} 

override func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat 
{ 
    if section == 0 
    { 
     return 140 
    } else 
    { 
     return 0 
    } 
} 

и результат этого (это тест): screenshot

Теперь я хотел бы сделать TableHeaderView не прокрутке с Tableview; Я сделал стиль TableView таким же простым; и я нашел это Change Default Scrolling Behavior of UITableView Section Header и это https://corecocoa.wordpress.com/2011/09/17/how-to-disable-floating-header-in-uitableview/, но я не знаю Objective-c (я быстрый программист всего за 6 месяцев). может ли кто-нибудь решить мою проблему?

ответ

3

Я бы определенно использовал UIViewController с UITableView и пользовательским представлением над ним (см. Ниже).

enter image description here

Или, если вы хотите использовать UITableViewController (который приносит некоторые дополнительные функции), вы можете вставлять его под заголовком, используя вид контейнера.

enter image description here

+1

Ну, может быть, первый вариант более прост. Но если вы хотите использовать UITableViewControllers, тогда вы можете в принципе передавать информацию в tableViewController при загрузке - используя либо «self.childViewControllers.first», либо получить указатель на встроенный UITableViewController в методе «performSegue:». (встроенные контроллеры - только особый вид segue) –

+0

Я не вижу, как этот ответ улучшается на том, что я дал 2 часа назад. – Mundi

3

Решение должно использовать UIViewController, а не UITableViewController. Контроллер табличного представления будет требовать всего view, и нет места над ним.

Вместо этого вы должны использовать UIViewController, добавить subview в качестве заголовка и добавить UITableView также в качестве подзаголовка. Вы заполняете и взаимодействуете с ним, явно включая в себя источники данных и делегированные протоколы.

class HeaderTableViewController : UIViewController, 
            UITableViewDataSource, UITableViewDelegate 
Смежные вопросы