2011-12-29 5 views
5

В моем приложении я использую UITableview. В этом методе делегата didselectrow, если я сделал любую операцию, возможно, произойдет просто.UITableview - tableView: didDeselectRowAtIndexPath: метод работает неправильно?

Например я есть 3 строки в Tableview

если выбрать 1 строку (indexPath.row == 0) ничего не произойдет

, если снова выбрать строку 2 (indexPath.row == 1) теперь это вход в консоль indexPath.row == 0, который является предыдущим значением.

, если снова выбрать 1 строку, а затем записать ее предыдущее значение indexPath.row = 1.

Почему это происходит.

- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

     CustomerInfoViewController *customer = [[EquipmentViewController alloc]initWithNibName:@"CustomerInfoViewController" bundle:nil]; 

    EquipmentViewController *equpment = [[EquipmentViewController alloc]initWithNibName:@"EquipmentViewController" bundle:nil]; 

    ContactsViewController *contacts = [[ContactsViewController alloc]initWithNibName:@"ContactsViewController" bundle:nil]; 

    if(indexPath.row == 0) 
    { 

     NSLog(@"one %d",indexPath.row); 
     [detailsView addSubview:customer.view]; 
    } 

    if(indexPath.row == 1) 
    { 

     NSLog(@"two %d",indexPath.row); 
     [detailsView addSubview:equpment.view]; 
    } 

    if(indexPath.row == 2) 
    { 

     NSLog(@"three%d",indexPath.row); 
     [detailsView addSubview:contacts.view]; 
    } 
} 

Пожалуйста, помогите мне.

Заранее спасибо.

+1

Показать фактический код может быть? – Vladimir

+0

Кажется логичным. Возможно, вывести инициализации в if-statements. Может ли это иметь какое-то отношение к разделам? Может быть, 'NSLog (@"% d% d ", indexPath.row, indexPath.section);' чтобы увидеть, не вызвана ли функция, или ваш код просто ошибочен. Вы должны устранить некоторые варианты, чтобы лучше понять проблему. – DAS

ответ

19

Вы внедрили didDeselectRowAtIndexPath метод, не didSelectRowAtIndexPath по назначению

+3

omfg Я потратил слишком много времени на это, как на мою проблему! lol – canhazbits

+0

'didSelectRowAtIndexPath:' обычно добавлялся по умолчанию к классу UITableViewController, но теперь он заменяется на 'prepareForSegue:', досадно. Это также означает, что многие люди не замечают крошечного 'De' в имени метода и используют неправильный метод. – runmad

1

реализации неправильного метода, как сказал Владимир. использование сделалSelectRowAtIndexPath

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