2015-08-24 204 views
0

我有一個表視圖與幾個不同的原型單元。我想有一個原型單元格被一個控制器所困,剩下的不應該是可點擊的,即沒有seg。從一個視圖控制器處理不同的控制器

現在,我有一個按鈕成功鏈接到控制器,但是當我點擊桌面視圖原型單元格時,它被分配到不同的控制器(在故事板中),沒有任何反應。我也沒有得到任何錯誤。

什麼是最好的方法來解決這個問題?我可以在故事板中製作兩個不同的階段嗎?或者我需要在tableview方法中實現一些東西,在索引路徑選擇行,不知何故抓住與點擊行相關聯的類,並以編程方式延續到不同的屏幕?喜歡的東西: FUNC的tableView(的tableView:UITableView的,didSelectRowAtIndexPath方法indexPath:NSIndexPath){ 的println( 「這裏」) //self.performSegueWithIdentifier("profileSeg」,發件人:個體經營) }

我沒有得到的當我選擇一個單元格時,println在這裏,而且我已經在viewdidload中分配了委託。

編輯

我剛剛意識到解釋這個問題時,我犯了一個錯誤。我實際上有一個鏈接到一個視圖控制器的底部的視圖。它不是一個tableview行...這是工作的seg。但我有CTRL從一種類型的單元格拖到第二個控制器,並且該seg不起作用。還有3種其他類型的細胞,其中沒有任何細胞附着。這與這個問題有什麼關係?

+0

它的原因是,您已經從故事板中的單元格選擇中將segue連接到另一個ViewController,將其從單元格選擇中移除並從ViewController重新添加到ViewController,但您現在需要使用它們的標識符調用特定的segue。 – iphonic

+0

@iphonic當你說從viewController重新添加到viewController你是什麼意思。我ctrl拖動到第二和第三控制器上的黃色圖標,但我在哪裏可以從第一個控制器上拖動? (如果不是從單元格選擇) – user2363025

+0

@iphonic我已經從單元格選擇中刪除了segues,並將viewControllerA連接到了viewControllerB和viewControllerC。 – user2363025

回答

1

如果didSelectRowAtIndexPath不工作時,它可以通過你的UITableViewDelegate尚未設置造成的,或者,它可能可能是您的UITableView的選擇已被關閉,需要打開,看圖像找到如何。

enter image description here

乾杯。

0

有兩種方法可以做到你想要什麼:

首先,如果你只想ONE TVCell一個視圖控制器連接,你可以做你開始做的:鏈接每TVCell與視圖控制器,你想從去那裏。對於那個按住Ctrl並從原型拖放到ViewController。所以每個TVCellPrototype可以有一個segue,如果你點擊cell,它會自動執行segue。 這也是你的代碼不打印「profile seg」的原因。 在這種情況下,您不需要給segue一個標識符。

如果您需要將MULTIPLE從一個TVCell分支到兩個或多個ViewControllers,第二種方法更好。爲此,您將TVCells的ViewController與您想要去的ViewController鏈接起來。這樣你可以設置儘可能多的segues,但是你必須給它們一個標識符,因爲你必須在tableView(... didSelectRowAtIndexPath)函數中調用它們。 (點擊界面生成器中的segue,給它一個標識符)。這將是這樣的:

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

    self.performSegueWithIdentifier("ProfileSeg", sender: AnyObject?())   
} 

現在讓我們談談爲什麼你沒有得到的println(「這裏」): 必須有根據功能的錯誤,因爲在前面沒有「覆蓋」它。通常,編譯器不會構建您的應用程序,因爲它缺少。我沒有所有的代碼,所以我不能完全說出你的錯誤是什麼。

+0

我的方法如下所示:函數的tableView(的tableView:UITableView的,didSelectRowAtIndexPath方法indexPath:NSIndexPath){ 的println( 「這裏」) //self.performSegueWithIdentifier("profileSeg」,發件人:self) } – user2363025

+0

你說過的兩種方法,我都試過了,他們沒有爲我工作。我只連接到cellprortotypeB的viewcontrollerB,我只連接到cellprotypeC的viewControllerC C – user2363025

+0

我剛剛意識到我在解釋問題時犯了一個錯誤。我實際上有一個鏈接到一個視圖控制器的底部的視圖。它不是一個tableview行...這是工作的seg。但我已經從一種類型的單元格拖動到第二個控制,並且該seg不起作用。還有3種其他類型的細胞,其中沒有任何細胞附着。這與這個問題有什麼關係? – user2363025

0

不要直接從單元格切換到'ViewController',您必須將單元格'ViewController'切換到另一個'ViewController'。你可以從'ViewController'中多次瀏覽。

並請添加以下代碼

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    println("You selected cell #\(indexPath.row)!") 
    if indexPath.row == 0{ 
     performSegueWithIdentifier("profileSeg", sender: self) 
    }else{ 
     performSegueWithIdentifier("anySeg", sender: self) 
    } 
} 
+0

你看過我的評論嗎?我試過這個。問題是我沒有進入這個功能 – user2363025

相關問題