2015-10-11 70 views
0

目前,我已經成功地將一個表視圖筆尖放入視圖控制器,但是當點擊筆尖中的一個單元格時,我將如何執行一個視圖控制器。我有一個視圖控制器中的筆尖和視圖控制器可以執行segues,但單擊單元格時,nib文件將執行segue,它不能。我如何獲得繼續工作?以下是筆尖的代碼。如何使用筆尖對不同的視圖控制器執行segue?

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.loadViewFromNib() 
    let nib = UINib(nibName: "LiveConcerts", bundle: nil) 
    table1.registerNib(nib, forCellReuseIdentifier: "cell") 
} 
func loadViewFromNib(){ 
    NSBundle.mainBundle().loadNibNamed("View1", owner: self, options: nil) 
    print("in viewcontroller") 
} 


func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return arrayOfConcerts.count 

} 


func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = self.table1.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! TableViewCell 

    let concerts = arrayOfConcerts[indexPath.row] 

    cell.setCell(concerts.imageName) 

    return cell 
} 

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

} 
+0

您可以從'didSelectRowAtIndexPath'方法執行segue – iRiziya

+0

我試過了,並且遇到了問題。我得到的錯誤是,筆尖不能執行預計的segue,因爲行位於筆尖而不是tableview,所以當我調用segue時,它調用筆尖而不是tableview。 – blee

+0

這很好,您的目標視圖控制器也由Xib或storyboard創建 –

回答

0

'對於Swift 3,你可以這樣做。您可以按照常規從表格視圖單元格創建您的Segue,然後將其轉到Storyboard中的另一個視圖控制器。

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    // When selected perform our segue we set in the storyboard 
    // Don't forget to set it's Storyboard Segue Identifier 
    let cell = tableView.cellForRow(at: indexPath) as? TableViewCell 
    self.performSegue(withIdentifier: "youSegueIdInTheStoryBoard", sender: cell) 
} 

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    // Here we can check the segue performed above in the 
    // didSelectRowAt indexPath function and 
    // Transfer any data to the destination view controller 
    if (sender != nil && segue.identifier == "youSegueIdInTheStoryBoard") { 
     let cell = sender as? TableViewCell 
     let indexPath:IndexPath = self.tableView.indexPath(for: cell!)! 
     // segue.destination is where you're now going, you can 
     // cast it to whatever type it is and set things on it 
    } 
} 
相關問題