簡體   English   中英

從一個視圖控制器中選擇到不同的控制器

[英]Segue to different controllers from one view controller

我有一個包含幾個不同原型單元格的表格視圖。 我想將一個原型單元固定到一個控制器上,其余的單元不應單擊,即沒有段。

現在,我有一個成功鏈接到控制器的按鈕,但是當我點擊與另一個控制器(在情節提要中)相連的tableview原型單元時,什么也沒發生。 我也沒有任何錯誤。

解決此問題的最佳方法是什么? 我可以在情節提要中進行兩種不同的選擇嗎? 還是我需要在tableview方法中實現一些功能,該方法在索引路徑中選擇了行,以某種方式獲取了與單擊的行關聯的類,並以編程方式將其縫制到了另一個屏幕? 類似的東西:func tableView(tableView:UITableView,didSelectRowAtIndexPath indexPath:NSIndexPath){println(“ here”)//self.performSegueWithIdentifier("profileSeg“,發送者:self)}

選擇單元格時,我沒有在這里得到println,是的,我已經在viewdidload中分配了委托。

編輯

我剛剛意識到我在解釋問題時犯了一個錯誤。 我實際上在底部有一個視圖,該視圖鏈接到一個視圖控制器。 它不是tableview行...這是有效的段。 但是我已將ctrl從一種類型的單元拖到另一個控件上,並且該段無法正常工作。 還有3種其他類型的單元格,均未連接段。 這和這個問題有關系嗎?

不要將單元格直接從“ 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)
    }
}

如果didSelectRowAtIndexPath不起作用,則可能是由於未設置UITableViewDelegate引起的,或者可能是UITableView的選擇已關閉,需要將其打開,請參見圖像以查找方法。

在此處輸入圖片說明

干杯。

有兩種方法可以做您想要的事情:

首先,如果您只想將一個TVCell與一個ViewController鏈接,則可以執行開始做的工作:將每個TVCell與您要從那里去的ViewController鏈接。 為此,按住Ctrl鍵並將其從原型拖放到ViewController。 因此,每個TVCellPrototype都可以有一個segue,如果您擊中該單元,它將自動執行segue。 這也是您的代碼不打印“配置文件段”的原因。 在這種情況下,您不需要給segue一個標識符。

如果您需要從一個TVCell到兩個或更多ViewController進行多個測試,則第二種方法更好。 為此,您可以將TVCell的ViewController與您要使用的ViewController鏈接。 這樣,您可以設置任意數量的序列,但是必須給它們提供標識符,因為必須在tableView(... didSelectRowAtIndexPath)函數中調用它們。 (在界面構建器中單擊segue以為其提供標識符)。 看起來像:

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

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

現在讓我們談談為什么沒有獲取println(“ here”)的原因:根據該函數,一定有一個錯誤,因為它前面沒有“ override”。 通常,編譯器不會構建您的App,因為它丟失了。 我沒有所有代碼,所以我無法確切地說出您的錯誤是什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM