2016-04-21 4 views
0

Я добавляю значения из первого TableView var savedUrls в первый раздел var detailsInSection во втором TableView. В prepareForSegue, Xcode показывает "неразрешенный идентификатор 'indexPath' Как я должен пересмотреть кодыПочему indexPath.row не работает должным образом?

В первом View Controller:.?

var folderNames = [String]() 

var savedUrls = [String]() 

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

    let url = savedUrls[indexPath.row] 

    self.performSegueWithIdentifier(segueToDetailsTable, sender: url) 

} 

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

    if segue.identifier == segueToDetailsTable { 

     let detailsVC = segue.destinationViewController as! DetailsViewController 

     detailsVC.detailsInSection[0].append(savedUrls[indexPath.row]) 

    } 
} 

В Second View Controller:

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

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

'detailsVC.detailsInSection [0] .append (отправитель)'? В 'prepareForSegue()' вы используете 'indexPath', который не существует в этом методе. – Larme

ответ

0

indexPath является а не переменная, определенная или перешедшая в prepareForSegue.Также вы на правильном пути. Поскольку вы передаете url в качестве отправителя в performSegue..., вам не нужен indexPath для ссылки на url. Вы можете проверить, что sender был String и использовать sender как url, который был выбран.

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

    let url = savedUrls[indexPath.row] 

    self.performSegueWithIdentifier(segueToDetailsTable, sender: url) 

} 

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

    if let url = sender as? String where segue.identifier == segueToDetailsTable { 

     let detailsVC = segue.destinationViewController as! DetailsViewController 

     detailsVC.detailsInSection[0].append(url) 

    } 
} 
+0

Спасибо keithbhunter, он работает хорошо. – Mike

0

Pass путь индекса в качестве didSelectRow...sender параметра и получить URL позже

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    self.performSegueWithIdentifier(segueToDetailsTable, sender: indexPath) 
} 

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == segueToDetailsTable { 
    let indexPath = sender as! NSIndexPath 
    let url = savedUrls[indexPath.row] 
    let detailsVC = segue.destinationViewController as! DetailsViewController 

    detailsVC.detailsInSection[0].append(url) 
    } 
} 
+0

Привет Вадянь, спасибо. Это хорошо работает. – Mike

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