2011-06-27 6 views
2

Довольно простой вопрос, но я просто не могу заставить его работать правильно. Мне нужно иметь доступ к значению заголовка строки раздела, когда щелкнута ячейка внутри этого раздела.Как вручную вызывать метод titleITHeaderInSection UITableView?

Мои первые попытки не работают:

[tableView titleForHeaderInSection:1]; 

Поэтому я думал, что будет работать, потому что я также использую это:

[tableView cellForRowAtIndexPath:indexPath]; 

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

Все, что мне нужно сделать, это передать строковое значение заголовка ячейки и заголовок раздела в следующем представлении.

Что я делаю неправильно? Есть ли лучший подход? Спасибо

ответ

0

titleForHeaderInSection - это метод протокола UITableViewDataSource, который реализуется классом клиента не UITabelView.

Таким образом, вы не можете позвонить titleForHeaderInSection на свой UITableView экземпляр.

+0

Это работало отлично! Я не знал, что этот метод является частью другого протокола, спасибо за понимание. –

0

как насчет:

[tableView titleForHeaderInSection:indexPath.section];

+0

, предполагая, что ваш источник данных не изменяется до того, как ваша таблица начнет загружаться, и вы запрашиваете данные, это должно быть хорошо. –

0

Вызов вручную titleForHeaderInSection не работает для меня.

Но простой [tableView reloadData] сделал трюк.

Надеется, что это помогает

1

Вы можете получить доступ к titleForHeaderInSection из UITableViewController и UITableView: вам просто нужно проследить цепочку объектов.

Пример начиная с контроллера представления:

class TableViewController: UITableViewController { 

    func titleForHeaderInSection(indexPath:NSIndexPath) -> String? { 
     if let tableView = self.tableView { 
      if let dataSource = tableView.dataSource { 
       if dataSource.respondsToSelector("tableView:titleForHeaderInSection:") { 
        return dataSource.tableView!(tableView, 
               titleForHeaderInSection:indexPath.row) 
       } 
      } 
     } 
     return nil 
    } 
} 

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

  • Нет связанных вопросов^_^