У меня есть tableView, который запускает segue для подробного просмотра при нажатии ячейки. Таблица содержит список пользователей, с которыми работает currentUser. Нажатие ячейки загружает представление для этого пользователя (имя, профиль и т. Д.). Это очень простое приложение, которое я создаю, чтобы научиться программировать.Segue не отправляет правильную информацию о ячейке в Swift
Проблема заключается в том, что когда я нажимаю на ячейку, она всегда загружает информацию о пользователе для последнего пользователя в таблице (а также бывает самым последним «другом», созданным пользователем). У меня есть ощущение, что проблема с если заявление я имею в функции Tableview:
extension MatchesViewController: UITableViewDataSource
{
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return numberOfMatches
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
let cell: UITableViewCell = tableView.dequeueReusableCellWithIdentifier("MatchCell", forIndexPath: indexPath)
if PFUser.currentUser()!.objectId == self.user1.objectId{
let user = matchesResults[indexPath.row]["user2"] as! PFUser
cell.textLabel?.text = user["first_name"] as! String
self.viewUser = user
}
if PFUser.currentUser()!.objectId == self.user2.objectId{
let user = matchesResults[indexPath.row]["user1"] as! PFUser
cell.textLabel?.text = user["first_name"] as! String
self.viewUser = user
}
return cell
}
}
Вот код Segue, но я не думаю, что есть проблема с ним (хотя я могу ошибаться) :
extension MatchesViewController: UITableViewDelegate
{
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
{
self.performSegueWithIdentifier("UserSegue", sender: "viewUser")
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if (segue.identifier == "UserSegue") {
let destinationVC = segue.destinationViewController as! UserViewController
destinationVC.user = self.viewUser
}
}
}
Любые идеи? Если есть проблема с моей командой tableView If, как я могу ее исправить?
Спасибо!
Спасибо за ответ! Я получаю «фатальную ошибку: неожиданно нашел нуль при распаковке необязательного значения» в строке 'let user = cell! .tag'. – winston
Почему «cell» nil? Вы выбираете ячейку, я думаю, вы должны получить выбранную ячейку. – t4nhpt
Я поменял 'let cell' обратно на' let cell: UITableViewCell = tableView.dequeueReusableCellWithIdentifier («MatchCell», forIndexPath: indexPath) ', но я сохранил другие строки вашего решения, и, похоже, это немного улучшило меня. Когда я загружаю tableView, XCode по какой-то причине переходит к пользователю View без нажатия ячейки и показывает нулевую ошибку на метке имени пользователя – winston