2012-11-05 135 views
7

我正在製作iOS應用程序,它是tableview基礎。 這是我想要做的。 Tableview1 - > Tableview2 一旦我選擇tableCell中的一個,就會顯示新的tableView2。 我希望在顯示新的tableView之前將單元格加亮。 儘管如此,hilight是如此之慢,因爲加載新的tableView數據。 我擡起頭。之所以爲prepareForSegue之前被稱爲didSelectRowAtIndexPath如何在prepareForSegue之前調用didSelectRowAtIndexPath?

那你能告訴我如何在prepareForSegue之前致電didSelectRowAtIndexPath

或者告訴我如何設置表格單元格時選擇單元格。

一切順利。

回答

1
  1. 製作賽格瑞的控制器 - > CONTROLER在didSelectRowAtIndexPath方法
  2. 當完成
  3. 運行數據加載 - >執行您賽格瑞
+0

Performsegue是更好的答案使用此值。但是另一個問題發生了。 但是,無論如何,謝謝! –

0

下面是你應該如何設置你的視圖控制器:

  1. 當視圖控制器外殼表視圖1加載時,加載表視圖1的數據。
  2. tableView:didSelectRowAtIndexPath:被稱爲,使用performSegue:火關閉segue。
  3. 當視圖控制器外殼表視圖2個負載,負載在數據表視圖2.

這聽起來像你可能會爲加載表視圖2過早的數據---這就是爲什麼你」重新看到滯後。由於您在加載數據時綁定了主線程,因此UI無法更新並向您顯示藍色突出顯示。

如果您在viewDidLoad方法中加載數據,那麼當用戶選擇表格視圖單元格時,您將避免使用昂貴的加載。您應該只告訴您的視圖控制器在tableView:didSelectRowAtIndexPath:方法中對細節視圖控制器執行segue。

+0

感謝它的工作。到目前爲止,performSegue是更好的答案。 –

20

你正在使用兩種不同的方法來完成它。

1 - 第一選擇 - 只用故事板和prepareForSegue:

原型細胞連接到第二的ViewController在故事板(連接必須從細胞開始和第二視圖 - 控制端)。 在這種情況下,您必須僅使用 prepareForSegue方法而不是didSelectRowAtIndexPath。在prepareForSegue之後,第二個VC會自動推送。

2 - 第二選擇 - 使用didSelectRowAtIndexPath方法:

您使用didSelectRowAtIndexPath方法只有從第一視圖 - 控制(而不是從小區)到第二視圖 - 控制連接SEGUE 。 在didSelectRowAtIndexPath方法的末尾,您必須調用performSegue。

+0

謝謝!它有效,但是又出現了另一個問題。 我會發布關於此的新線程。 –

+16

如果您正在使用第一個替代方法,並且需要根據表格中單元格的位置採取操作,請使用它來獲取正確的indexPath:NSIndexPath * indexPath = self.tableView.indexPathForSelectedRow; – mpemburn

+0

第二種替代方法適用於我。 –

1

您需要的是以下功能。它將在prepareForSegue之前被調用。首先,你需要在你的類定義一個變量,然後將其設置在像波紋管這個功能:

var selectedIndexPath: NSIndexPath = NSIndexPath() 

override func tableView(tableView: UITableView, willSelectRowAtIndexPath indexPath: NSIndexPath) -> NSIndexPath? { 
     selectedIndexPath = indexPath 
     return indexPath 
    } 

然後終於可以在preparedForSegue功能

+0

尼斯爲我工作也謝謝:)哈米德 –

+0

@AadilAli沒問題:) – Hamid

相關問題