2015-02-11 2 views
0

Итак, я нашел много вопросов и ответов по этой проблеме, но, похоже, я все еще не могу исправить свою проблему. Я получил это:Два UITableView в одном контроллере просмотра

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 

    if(tableView == self.moduleTableView){ 
     UITableViewCell *cell = [_moduleTableView dequeueReusableCellWithIdentifier:@"TableIDCell"]; 
     if (cell == nil) { 
      cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"TableIDCell"]; 
     } 

Это все хорошо и работает для moduleTableView и у меня есть код, чтобы заполнить отдельные ячейки. Тем не менее, у меня есть if(tableView == theOtherTableview), и код никогда не выполняется (использовались контрольные точки). Из-за этого второе табличное представление никогда не загружается и не заполняется. я сделал для того же, если заявления в методе numberOfRows и заявляют:

self.tblEvents.delegate = self; 
    self.tblEvents.dataSource = self; 
    self.otherTblEvents.delegate = self; 
    self.otherTblEvents.dataSource = self; 

и она по-прежнему не работает, я упускаю что-нибудь? Я думаю, что я связан с осуществлением правильно раскадровку, я просто не могу получить его, чтобы перезагрузить метод cellForRowAtIndexPath: пока (tableView == OtherTableView)

Благодаря

+0

проверить делегат theOtherTableview установлен ... – Damo

ответ

0

Проверьте - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section метод возвращает нулевое значение (пустой граф массив), Cell для метода Row будет вызываться только в том случае, если метод numberOfRowsInSection возвращает ненулевое значение.

numberOfRowsInSection должен возвращать ненулевое значение

+0

просто для того, чтобы уточнить 'tableView: numberOfRowsInSection:' не должен возвращать массив, просто число. обычно это будет свойство 'count' некоторого массива. –

+0

Почему в мире так много идиотов, как я, и таких немногих хороших людей, как ты. Спасибо, это решило мою проблему! – simbo64

+0

мое удовольствие @ simbo64 – Saif

1

Я был точно такой же вопрос, как вы. Я обнаружил, что самым чистым решением является создание 2 классов источников данных. Таким образом, в вашем контроллере просмотра гораздо меньше кода. В основном что-то вроде этого

DatasourceTblEvents *ds1 = [DatasourceTblEvents new]; 
    DatasourceotherTblEvents *ds2 = [DatasourceotherTblEvents new]; 

    self.tblEvents.dataSource = ds1; 
    self.otherTblEvents.dataSource = ds2; 

Это значительно уменьшает количество if заявлений в рамках методов протокола DataSource. И таким образом вы можете просто внедрить методы источника данных в каждом классе данных, например, с одним табличным представлением.

Надеюсь, это поможет.

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