2017-01-09 6 views
1

Внутри моего tableview.swift у меня есть профили пользователей, загруженные в ячейки. Когда пользователь выбирает одну из этих ячеек, они затем перенаправляются на mainProfile.swift, где они могут видеть выбранный профиль пользователя. После прочтения нескольких постов я этот код создан внутри tableview.swift, но он по-прежнему не пропускает данные, захваченные из клетки Tableview в mainProfile вДанные не могут быть обработаны

var mainProfile: mainProfile? 
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    let user1 = self.users[indexPath.row] 
    mainProfile?.user2 = user1 
    print(mainProfile?.user2 as Any) 
    performSegue(withIdentifier: "mainProfile", sender: self) 

} 
override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "mainProfile" { 
     let viewControllerAccept = segue.destination as! mainProfile 
     let user2 = sender as Any? 
     viewControllerAccept.user2 = user2 as! User? 
    } 
} 

ответ

2

Вы должны упростить didSelectRowAt просто выполнить переход:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    performSegue(withIdentifier: "mainProfile", sender: self)  
} 

(или удалить этот метод полностью, а просто добавить SEGUE непосредственно к прототипу клеток в раскадровке.)

Затем измените prepare(segue:) использовать indexPathForSelectedRow знать, какие строка была выбрана:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "mainProfile" { 
     let indexPath = tableView.indexPathForSelectedRow! 
     let viewController = segue.destination as! MainProfileViewController 
     viewController.user2 = users[indexPath.row] 
    } 
} 
+1

Кстати, я изменил имя класса контроллера вашего назначения, потому что в соответствии с соглашениями об именах какао классы всегда должны начинаться с буквы верхнего регистра. Очевидно, что в вашем случае используется любое имя класса. – Rob

+0

Я не знаю, как вас достаточно поблагодарить! Это решение отлично работает, спасибо вам снова – Otheprogrammer

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