2015-10-05 2 views
0

У меня есть два UILabels на моем UITableViewCell.TableViewCell не показывает данные в первый раз

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

enter image description here

Мой cellForRowAtIndex метод:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *simpleTableIdentifier = @"cell"; 

NSLog(@"index = %ld",indexPath.row); //This logs correct 0,1,2 ..and so on 

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier]; 

if (cell == nil) { 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier]; 
} 
UILabel *lblCellTitle = (UILabel*)[self.view viewWithTag:1]; 
UILabel *lblCellDetail = (UILabel*)[self.view viewWithTag:2]; 

lblCellTitle.text = [arrtableDataHeading objectAtIndex:indexPath.row]; //this array contain valid values 
lblCellDetail.text = [filterdInfo objectAtIndex:indexPath.row]; //this array contain valid values 

return cell; 

} 

Моя проблема, когда первый раз я открываю мой контроллер данные показаны из второго индекса, а в последнем я вижу имя пользовательской метки, как показано ниже:

enter image description here

И когда я прокручиваю, обновляются только данные и в случайном порядке я не могу получить данные в правильном порядке.

Когда я отлаживаю когда indexPath 0 прицел, получающий нуль в UILabel, но когда он становится 1, я получаю правильное значение.

enter image description here enter image description here

Некоторые один сказал мне, используя cell.ContentView вместо self.view решит мою проблему. Но я смущен. Как это может быть.

+0

Вы установили идентификатор ячейки в Storyboard ("cell")? – Mahesh

+0

Да, я установил, что @Mahesh – NSUser

ответ

0

Попробуйте изменить эти строки,

UILabel *lblCellTitle = (UILabel*)[self.view viewWithTag:1]; 
UILabel *lblCellDetail = (UILabel*)[self.view viewWithTag:2]; 

с

UILabel *lblCellTitle = (UILabel*)[cell.contentView viewWithTag:1]; 
UILabel *lblCellDetail = (UILabel*)[cell.contentView viewWithTag:2]; 

Если он не работает, дайте мне знать.

+0

работает в одном VC, но не работает. – NSUser

2

Как я бы рекомендовал, чтобы вы следовали неправильно. Как и в случае с MVC, ваши классы просмотра и классы контроллера должны отличаться, если вы делаете что-то обычай. В вашем случае вы можете создать класс UITableViewCell и использовать его объект для инициализации своей ячейки.

CommentsTableViewCell *cell = (CommentsTableViewCell *)[tableView dequeueReusableCellWithIdentifier:@"comments cell"]; 
    cell.lblName.text = @"String data"; 
    NSString *dateString = @"String data"; 
    cell.lblCommentTime.text = @"String data"; 
    cell.imgDp.image = [UIImage imageNamed: @"String data"]; 
    cell.lblCommentDuration.text = @"String data"; 

В приведенном выше коде CommentsTableViewCell - это настраиваемый класс для UITableViewCell. Надеюсь, вам понравится.

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