2017-02-19 5 views
0

У меня есть обычай UITableView в ViewController. Моя пользовательская таблица имеет пользовательский формат UITableViewCells. Это код внутри моего ViewController:UITableView didSelectRowAt не регистрируется

ViewDidLoad:

 self.firstListTable.dataSource = self 
     self.firstListTable.delegate = self 
     self.firstListTable.register(UINib(nibName: "firstQueueCell", bundle: Bundle.main), forCellReuseIdentifier: "firstCell") 

     self.searchListTable.dataSource = self 
     self.searchListTable.delegate = self 
     self.searchListTable.allowsSelection = true 
     self.searchListTable.register(UINib(nibName: "SearchCell", bundle: Bundle.main), forCellReuseIdentifier: "SearchCell") 
     self.searchListTable.separatorStyle = .none 

UITableViewFunctions:

func tableView(_ tableView: UITableView, didHighlightRowAt indexPath: IndexPath) { 
    if tableView == self.searchListTable { 
     print("hello") 
    } 
} 

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){ 
    print("hello") 
} 

didHighlightRowAt работает, но didSelectRowAt не делает.

Я попытался это: didSelectRowAtIndexPath: not being called

Какие причины могли быть?

Спасибо!

+0

похоже, что в вашем коде нет ошибки, можете ли вы опубликовать весь код об этом, если мы посмотрим, если другое место пойдет не так? – aircraft

+0

@ user82395214, проверил ваш код. Ничего плохого в этом нет. Оба они отвечают. Можете ли вы изменить выражение 'print' для метода' didSelectRowAt' из 'print (« hello »)' на что-то другое и проверить его снова? – KrishnaCA

ответ

0

Если вы хотите didHighlightRowAt и didSelectRowAt как ответ, вы можете перезаписать метод didHighlightRowAt так:

func tableView(_ tableView: UITableView, didHighlightRowAt indexPath: IndexPath) { 
if tableView == self.searchListTable { 
    print("hello") 

    // this is my OC code ,change it to your swift code 
    [tableView selectRowAtIndexPath:IndexPath animated:NO scrollPosition:UITableViewScrollPositionNone]; 

    } 
} 

Вы можете понять это как didHighlightRowAt метод и didSelectRowAt метода есть конфликты, если вы хотите как ответ метода, вы должен сделать специальное лечение.

+0

Извините, нет. Я пытаюсь сказать, что мой 'didHighlight' работает, но' didSelect' не работает. Я не хочу, чтобы пользователь должен был держать ячейку для взаимодействия с ней. – user82395214

+0

Я знаю, что вы хотите, но если вы переписываете оба метода, как ваш код, 'didSelectRowAt' очень сложно ответить. пользователь должен нажать очень много времени, чтобы позвонить 'didSelectRowAt'. –

+0

Можете ли вы рассказать мне о реальных усилиях, которые вы хотите сделать в 'didHighlightRowAt'? Я предлагаю вам поместить код для ваших усилий в метод 'didSelectRowAt'. –

-1
- (nullable NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 
    if (indexPath.row == 2) { 
     //if you want didSelectRowAtIndexPath not call return nil; 
     return nil; 
    } 
    return indexPath; 
} 
Смежные вопросы