2016-04-20 4 views
0

Существует табличное представление с именами папок, и после нажатия на каждую строку он переходит в другой TableView, чтобы отображать разделы и строки для каждой папки. Но у меня возникли проблемы с отображением значений, соответствующих каждой папке. Сообщение об ошибке: фатальная ошибка: неожиданно найдено нуль при развертывании необязательного значения. См. Мои коды ниже. Я думаю, проблема в том, что коды readyForSegue не работают хорошо.Как сопоставить значения в двух табличных видах

Примечание: Где-то мне нужно удалить половину ")", поскольку он не работает для "()", и я не могу редактировать. Пожалуйста, помогите отредактировать.

В первом Tableview:

var folderNames = [String]() 

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

     if segue.identifier == segueToDetailsTable { 

      let detailsVC = segue.destinationViewController as! DetailsViewController 

      detailsVC.detailsTableView.indexPathForCell(UITableViewCell(style: UITableViewCellStyle.Value1, reuseIdentifier: "DetailsCell")) == savingTableView.indexPathForSelectedRow 


     } 

    } 

Во второй TableView, чтобы показать детали:

var sectionTitles = ["WebSite", "Date Saved", "Document Used","Add Notes"] 

var detailsInSection = [[String](), [NSDate](),[AnyObject](),[String]()] 

func numberOfSectionsInTableView(tableView: UITableView) -> Int { 

     return detailsInSection.count 
    } 

    func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? { 

     return sectionTitles[section] 
    } 


    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

     return detailsInSection[section].count 
    } 

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

     let cell = tableView.dequeueReusableCellWithIdentifier("DetailsCell") 

     cell?.textLabel!.text = detailsInSection[indexPath.section][indexPath.row].description 

     return cell! 
    } 
+0

Возможно, ячейка? .textLabel! .text = detailsInSection [indexPath.section] [indexPath.row] .description Текстовая метка равна нулю? – Maik639

+0

какая строка вызывает ошибку? Включите контрольные точки исключения, если вы не можете найти, где. –

+0

Привет, Andrew, эта строка в файле prepareForSegue вызывает ошибку: detailsVC.detailsTableView.indexPathForCell (UITableViewCell (стиль: UITableViewCellStyle.Value1, reuseIdentifier: "DetailsCell")) == saveTableView.indexPathForSelectedRow – Mike

ответ

0

Вы делаете некоторые странные вещи в prepareForSegue. detailsVC еще не загружен, поэтому tableview все равно может быть nil. Но самое главное, вы не можете подключить такие таблицы. Когда вы выбираете строку, выясните, какие данные должны быть показаны в следующем. После того как вы агрегировали данные, установите его как свойство для второго vc внутри метода prepareForSegue. Когда следующая загрузка vc свойство, которое оно использует, должно быть уже установлено при загрузке таблицы. У вас также есть два разных источника данных, из которых читается таблица. Это немного опасно, потому что вы не можете гарантировать, что в другом источнике будет соответствующее значение.

+0

Привет, Андрей, получил эту идею и попытался. Благодарю. – Mike

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