2016-08-03 55 views
0

在同一個ViewController我有一個segue只有條件滿足時纔會以編程方式觸發,另一個我希望如果一個按鈕獨立按下條件滿足或不滿足時會執行另一個。可可segue設置問題

不執行第二賽格瑞說,條件心不是滿足 第一賽格瑞具有標識符「賽格瑞」,這是怎樣的編程方式觸發:

override func shouldPerformSegueWithIdentifier(identifier: String, sender: AnyObject!) -> Bool { 

    if condition==true{ 
     return false 
    } 
    else { 
     return true 
    } 

override func prepareForSegue(segue: NSStoryboardSegue, sender: AnyObject!) { 
    if (segue.identifier=="segue"){ 

     (segue.destinationController as! NSViewController).representedObject=someString 

    } 

} 

} 

第二賽格瑞具有標識符「segue2」及其從按鈕連接到目標視圖控制器。

我怎樣才能讓segue2獨立執行條件?

回答

0

聽起來好像您應該比較標識符,並且如果它與第二個segue名稱匹配,則始終返回true。如果標識符與第一個segue名稱匹配,則只檢查條件。

+0

謝謝菲利普斯,請你向我解釋一些東西?我在iOS上有相同的設置,唯一不同的是鏈接到segue2的按鈕位於NavigationBar上,並且它沒有執行您的建議就可以正常工作...... – user440309

+0

我只能猜測,但如果segue2的按鈕不屬於同一個視圖控制器,那麼'shouldPerformSegueWithIdentifier'不會被調用。斷點應該告訴你正確的答案。 –

+0

謝謝,在這兩種情況下按鈕屬於同一個ViewController ..我實現的這個解決方案是一個替代方案,在我的原始設計中,我在另一個問題上加蓋了,我的頭靠在牆上撞了一天無法解決,我不是非常熟悉這裏的規則,我提前道歉,如果我不符合要求,但要求你對這個問題的幫助太多ht​​tp://stackoverflow.com/questions/38734559/cocoa-view-controller-scene -issue – user440309

0

我認爲你應該將按鈕鏈接到一個IBAction,它以編程方式執行segue。另外,將檢查條件的邏輯移動到您在視圖控制器中調用的另一個函數。

@IBAction buttonPressed(sender: AnyObject) { 

    self.performSegueWithIdentifier("segue2", sender: self) 
} 

func checkCondition() { 

    if condition == true { 
     self.performSegueWithIdentifier("segue", sender: self) 
    } 
} 

override func prepareForSegue(segue: NSStoryboardSegue, sender: AnyObject!) { 

    if (segue.identifier=="segue") { 
     (segue.destinationController as! NSViewController).representedObject=someString 
    } 
    else if (segue.identifier=="segue2") { 
     // Do any segue 2 setup 
    } 
} 
+0

嗨Shades,感謝您花時間提供答案,我只選擇了Phillip的答案,因爲實施時間較短,但您的答案一樣好! – user440309