2015-02-10 3 views
14

просто интересно, как я хотел бы реализовать didSelectRowAtIndexPath или что-то подобное в моем приложении. У меня есть заполненный Table View с несколькими динамическими ячейками, и в основном я хочу изменить Views после выбора определенной ячейки.Как определить выбор ячейки в UITableView - Swift

Я могу обойти его в Obj-C, но в google нет ничего, чтобы помочь мне с Swift! Любая помощь будет оценена по мере того, как я все еще изучаю

ответ

27

Вы можете использовать didSelectRowAtIndexPath в Swift.

func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) { 
    NSLog("You selected cell number: \(indexPath.row)!") 
    self.performSegueWithIdentifier("yourIdentifier", sender: self) 
} 

Для Swift 3 это

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    NSLog("You selected cell number: \(indexPath.row)!") 
    self.performSegueWithIdentifier("yourIdentifier", sender: self) 
} 

Просто убедитесь, что вы реализуете UITableViewDelegate.

+0

Thankyou так много! Google вообще не занимался, я потратил много времени на поиски и так же долго пытался себя пробовать ... Это, однако, представляет мне еще одну проблему. Как я могу убедиться, что каждая отдельная ячейка выполняет другой сеанс? – Alex

+0

Проверьте индексPath.row. Он дает вам номер строки. Затем вы можете использовать if-else. – Christian

+0

Удивительный! Спасибо за помощь, я, наконец, начинаю понимать Swift немного лучше сейчас :) – Alex

2

Вот как мне удалось переходить из ячеек UITableView в другие контроллеры представлений после реализации cellForRow, numberOfRowsInSection & numberOfSectionsInTable.

//to grab a row, update your did select row at index path method to: 

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    NSLog("You selected cell number: \(indexPath.row)!"); 

    if indexPath.row == 1 { 
     //THE SEGUE 
     self.performSegue(withIdentifier: "goToMainUI", sender: self) 
    } 
} 

Выведет: You selected cell number: \(indexPath.row)!

Помните, чтобы соответствовать идентификатор вашего Segue в раскадровку к идентификатору функции, например goToMainUI.

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