2016-02-18 3 views
0

У меня есть tableView в моем приложении, и когда пользователь нажимает на эту ячейку, мне нужно, чтобы он перешел к другому контроллеру представления, который дает более подробную информацию о ячейке, на которую они нажали. Когда я пытаюсь получить cellForRowAtIndexPath путем не используяcellForRowAtIndexPath не работает должным образом

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

     print("You selected cell #\(indexPath.row)!") 

    } 

Ничего не выводится на консоль, так что я не могу передать эти данные в другой контроллер представления через Segue, не зная, что. Есть ли причина, по которой это не сработает?

Я получаю информацию, хотя этот массив: var postsArray = [PFObject](), а таблица заполняется с помощью return postsArray.count Любая помощь была бы принята с благодарностью. Я, возможно, не замечаю этого, но я не уверен, почему это не сработает, поскольку он работал в других моих приложениях.

Я также импортировал делегатов и также вызвал table.delegate = self в свой метод viewDidLoad.

class Profile: UIViewController, UITableViewDelegate, UITableViewDataSource 

Полный код можно найти здесь: http://pastebin.com/26frZGpa

+0

тот метод TableView делегата. вы установили, что делегат tableview является экземпляром класса, который реализует этот метод? Например, 'tableView.delegate = self', если self также принадлежит tableview –

+0

Да, я сделал Will. Извините, я просто добавил эту часть к вопросу. –

+0

См. Мои комментарии. Вы уже это сделали? Просто объявление профиля как UITableViewDelegate позволяет ему быть делегатом tableView, но пока вы фактически не зададите свой экземпляр профиля как делегата для этого конкретного вида таблицы, он не получит обратные вызовы для этого табличного представления. –

ответ

1

Линия

tableView.delegate = self 

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

В вашем случае для выполнения segue более удобно подключать segue к ячейке просмотра таблицы, а не к контроллеру вида.

Основным преимуществом является то, что вид ячейки таблицы передается в качестве параметра sender в prepareForSegue, и вы можете получить путь индекса легко с

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     let selectedIndexPath = tableView.indexPathForCell(sender as! UITableViewCell)! 
    } 
+0

Можем ли мы начать чат на секунду? У меня есть еще один вопрос. –

+0

Боюсь, нет, мне нужно идти. – vadian

+0

В любом случае я могу связаться с вами для будущего вопроса? Я уверен, что это простой ответ, просто не уверенный в чем-то. –

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