2016-09-30 2 views
1

Я знаю, что этот вопрос задают много раз. Потребительский с последних 2 дней. Пожалуйста, помогите мне.Быстрая передача значений между табличным представлением и viewController

У меня есть пользовательский TableView, пытающийся передать несколько данных из массива этого Tableview в следующий вид.

Ошибка: неожиданно найдено нуль при развертывании необязательного значения.

Я пробовал много способов .. но никакого успеха.

EDITED

Наконец решаемые

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 


    if segue.identifier == "SegueToQR" 
    { 
     let controller = segue.destinationViewController as! QRcodeViewController 
     if let button = sender as? UIButton { 
      let cell = button.superview?.superview?.superview as! PatientTableViewCell 
      controller.passName = cell.patientName.text 
      controller.passAdress = cell.adress.text 
     } 
    } 

    } 
+0

Можете ли вы включить код своего QRcodeViewController? В частности, где определены свойства passName и passAdress? –

+1

Попробуйте использовать 'performSegueWithIdentifier (« SegueToQR », отправитель: отправитель as! UIButton)' –

+0

см. Это http://www.itstrike.cn/Question/27c2fa4b-0c1b-43cc-8b1a-5263b2d401c1.html –

ответ

1

Ваша логика неверна. UITableView поддерживает только ячейки, которые видны на экране. Поэтому, если вы попытаетесь получить доступ к ячейке, которая не видна, это приведет к исключению nil.

Сначала не используйте CGPoint для получения индекса. Назначьте тег каждой кнопке в своей ячейке и передайте эту кнопку в параметре отправителя функции performSegue.

Затем вы должны поддерживать данные своего пациента в массиве. А затем получить доступ к данным, используя button.tag как индекс массива. Вы получите объект модели пациента, из этого объекта вы можете передать данные на следующий контроллер представления.

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