2015-10-26 2 views
0

Мое приложение падает во время прокрутки UITableview, у которого есть пользовательская ячейка, но отлично работает на симуляторах.Как разрешить сбои при прокрутке UITableview с пользовательской ячейкой?

Ниже мой код

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath // Values of each cell 

    { 
     static NSString *cellidentifier = @"cellidentifier"; 
     TableCell *cell = (TableCell*) [tableView dequeueReusableCellWithIdentifier:cellidentifier]; 
     //NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"TableCell" owner:self options:nil]; 
     //cell = [nib objectAtIndex:0]; 
     cell = (TableCell *) [[[NSBundle mainBundle] loadNibNamed:@"TableCell" owner:self options:nil] objectAtIndex:0]; 

     if (cell == nil) 
     { 
      cell = [[[TableCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellidentifier] autorelease];     

     } 

     cell.lblname.text = [name objectAtIndex:indexPath.row]; 
     cell.lblphone.text = [phone objectAtIndex:indexPath.row]; 
     cell.lbladdress.text =[address objectAtIndex:indexPath.row]; 

     NSData * photodata=[photo objectAtIndex:indexPath.row]; 
     cell.imgphoto.image=[UIImage imageWithData:photodata];   

     return cell; 
} 

Любая помощь будет оценена.

+0

Не могли бы вы включить аварийное сообщение в консоли? – mbo42

+0

Ошибка «Память полученной памяти», но она отлично работает на симуляторах, сбои на iphone –

+0

Я думаю, потому что вы не использовали повторно свою ячейку, чтобы она быстро увеличивала использование памяти, если у вас много ячеек, а на симуляторе она имеет большой объем памяти, когда на устройстве нет. Проверьте мой ответ. – kientux

ответ

0

Ваш tableView не повторно использует ячейку вообще. Потому что вы переназначаете cell после звонка dequeueReusableCellWithIdentifier:. Ваш код должен быть:

static NSString *cellidentifier = @"cellidentifier"; 
TableCell *cell = (TableCell*) [tableView dequeueReusableCellWithIdentifier:cellidentifier forIndexPath:indexPath]; 
//NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"TableCell" owner:self options:nil]; 
//cell = [nib objectAtIndex:0]; 

if (!cell) { 
    cell = (TableCell *) [[[NSBundle mainBundle] loadNibNamed:@"TableCell" owner:self options:nil] objectAtIndex:0]; 
} 
+0

показывает ошибку forIndexPath: indexPath вторая строка –

+0

говорит: «instance method dequeueReusableCellWithIdentifier: forIndexPath: indexPath не найден (тип возвращаемого значения по умолчанию для id)» –

+0

Какова ваша цель развертывания? Какая версия iOS? Этот метод доступен в iOS 6.0. И я проверил, здесь нет опечатки. Когда вы вводите эту строку, Xcode дает вам автозаполнение для этого метода? – kientux

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