2016-05-12 78 views
1

目前我正在應用程序中使用兩個不同的ViewController,我們可以將它們稱爲VC1和VC2。 VC1顯示一個註冊表單,在UITableView的每一行中都有一個問題,並且有一個編輯按鈕。編輯按鈕與VC1和VC2一樣是一個segue。 VC2顯示一個界面,允許用戶編輯問題。我想編寫應用程序,以便除非您選擇了一個問題(行)進行編輯,否則您無法從VC1繼續訪問VC2。現在我已經設置了一些設置,但是我有可能倒退。Swift:如果條件不符合,則繼續執行segue

在VC1:

// this method isn't called until VC2 segues back to VC1... so I don't know how 
// to make sure that a selection has been made before pressing the button 
@IBAction func editQuestion(segue:UIStoryboardSegue) { 
     if let editQuestion = segue.sourceViewController as? VC2 { 

     } 
} 

在VC2:

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

    // check to make sure that user has completed all fields of question 
    // if they haven't completed all fields, return false (do not segue) 
    // else segue to VC1 
} 
+0

在你調用performSegueWithIdentifier() – Siriss

+0

之前執行segue的檢查應該在VC1中發生是的,我明白這一點。我不確定如何做到這一點。你有什麼想法?我現在的結構不適合這一點。 –

+0

你是怎麼把這個segue調用到VC2的?它在故事板上連接起來了嗎? – Siriss

回答

2

在VC1實現:

override func shouldPerformSegueWithIdentifier(identifier: String, sender: AnyObject?) -> Bool { 
     if identifier == <your storyboard segue identifier> { 

     } 
    } 

給你的故事板Segue公司的標識,那麼你可以做的檢查中VC1,並且如果你不想讓繼續發生,則返回false。

+0

所以我應該在VC1和VC2中都有一個shouldPerformSeguieWithIdentifier?你能做到嗎?我在VC2中使用了一個標識符。 –

+0

您應該在VC1中進行檢查。你可以在VC2中使用它,但它只會在你已經被VC2搜索之後纔有用。 – Siriss

+0

我在VC1中有多個segues。它會知道要繼續觀看哪些視圖嗎? –

相關問題