2016-12-14 5 views
1

У меня очень странный вопрос, то есть когда я впервые вызвал метод didSelectRowAtIndexPath, тогда он не работает.Попробуйте называть `didSelectRowAtIndexPath`, но не вызывается в первый раз

Если я позвоню снова, это будет сделано. Когда я устанавливаю точку останова в первый раз, код в didSelectRowAtIndexPath также будет выполняться, но он не будет нажимать на следующий контроллер.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    tableView.allowsSelection = NO; 
    ChatRoom *room = [_rooms objectAtIndex:indexPath.row]; 
    if (!room.conv) { 
     room.conv = [[_im imClient] conversationForId:room.convid]; 
    } 
    CDChatRoomViewController* chatRoomVC=[[CDChatRoomViewController alloc] init]; 
    chatRoomVC.room = room; 
    chatRoomVC.convId = room.convid; 
    chatRoomVC.converSation = room.conv; 
    chatRoomVC.hidesBottomBarWhenPushed = YES; 
    [self.navigationController pushViewController:chatRoomVC animated:YES]; 
} 
+0

Проверьте правильность имени метода – Furqan

+0

Эта проблема возникает только на iPhone, когда я использую симулятор для ее проверки, все в порядке. – Adam

+0

Не могли бы вы высказать какой-то код! –

ответ

0

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

// Этот метод ниже будет вызываться, когда ваш мобильный становится Selected

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) { 
//Cell selected 
} 

// Этот метод ниже будет вызван, когда ваша ячейка будет отменена. Это может быть вашего случай

func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) { 
//Cell deselected 

} 

При выборе ячейки в Tableview, TableView огнь метод Отменить для выбранной ячейки (кроме множественного выбора Вкл)

Надеется, что это оправдает ответ на вашу проблему.

+0

Спасибо, я уверен, что метод, который я назвал, прав.- (void) tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) indexPath { – Adam

+0

можете делиться фрагментом кода –

+0

, мы можем помочь вам лучше –

0

Прежде всего вам нужно научиться использовать segue для передачи данных между контроллером представления. Это довольно быстрый и удобный способ передачи данных между View Controller. Был другой путь, как делегат.

В текущем контроллере представления, пожалуйста, объявляю

var selectedCD : Int = 0 

В вашем методе didSelectRowAtIndexPath, пожалуйста, исправить это.

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 

    yourTableName.deselectRowAtIndexPath(indexPath, animated: true) 
    // There is no need to do "tableView.allowsSelection = NO;" 
    selectedCD = indexPath.row 
    self.performSegueWithIdentifier("goToChatRoom", sender: self) 
    // "goToChatRoom" is the name of segue which will go to CDChatRoomViewController which you need to set this at Storyboard. 

} 

В ViewWillAppear() из CDChatRoomViewController

self.hidesBottomBarWhenPushed = true 

Затем создайте следующий SEGUE метод в котором вы делаете метод UITableView Делегирование,

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?){ 
    if segue.identifier == "goToChatRoom"{ 
     let destinationController = segue.destinationViewController as! CDChatRoomViewController 
     // handle selectedCD logic here 
     ChatRoom *room = [_rooms objectAtIndex:indexPath.row]; 
     if (!room.conv) { 
      room.conv = [[_im imClient] conversationForId:room.convid]; 
     } 
     destinationController.room = room; 
     destinationController.convId = room.convid; 
     destinationController.converSation = room.conv; 
    } 
} 

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

Вы можете узнать с помощью перетекает здесь:

Sending data with Segue with Swift

Попробуйте этот способ

Помните, что не добавляют реализации [что нужно сделать обработку, которые используют процессор или RAM] на сделалSelectRowAtIndexPath.

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