我有一個分段控件,我用它在三個視圖控制器之間切換。我的第一個tableview被嵌入到導航控制器中,其中分段控件位於導航控制器中。我還在故事板中有兩個自定義段落(動畫來自左側和右側)。在我的「主」控制器類 - 分段控制的中間 - 我使用此代碼使用故事板段與分段控制
- (IBAction)indexChanged:(id)sender {
if ([sender selectedSegmentIndex] == 0) {
[self performSegueWithIdentifier:@"leftSegue" sender:self];
}
else if ([sender selectedSegmentIndex] == 1){
}
else {
[self performSegueWithIdentifier:@"rightSegue" sender:self];
}
}
這對於這兩個控制器非常適用。當這些視圖控制器放在屏幕上時,我仍然可以在最左側和最右側的控制器之間移動,但是回到主控制器正在嘗試嘗試的每次嘗試都會崩潰。我認爲這與我不瞭解self
我發送的performSegueWithIdentifier
消息或self
,我將傳遞給sender:
。
示例:如果在else if ([sender selectedSegmentIndex] == 1){}
創建新SEGUE,與唯一標識符從兩個新控制器來,應用程序崩潰說「接收器具有帶有標識符的賽格瑞」當它被正確拼寫。在這個例子中,接收者是誰?
編輯:我在這裏添加了當前的故事板圖片。前兩個是自定義賽段,中間兩段是模態和推送,針對需求而定。
編輯2:使用像self.navigationController.viewControllers[0]
這樣的方法找到了正確的視圖,但它不允許我切換回初始控制器 - 它重新繪製並丟失導航欄。
它適當的標籤。錯誤必須來自IBAction內部 - 'self'是我想要顯示的視圖控制器。我是否應該繼續使用popover或類似的方法? – Jared 2014-09-10 16:06:24
我的理解是,你從中間部分開始你的觀點(我們稱之爲VC2)。然後你移動到VC1或VC3。當你通過分段控制回到VC2時,這就是錯誤發生的地方? – Koh 2014-09-10 17:11:51
是的,確切地說。我現在知道錯誤發生了,因爲分段控制操作發生在VC2內 - 這是各種主要視圖。有一種簡單的方法可以適應「自我」。也許我會在兩者之間提出一個清晰的視圖,並使用它進行導航。理想情況下,我想顯示VC2 0.5秒,並立即繼續VC1,如果我在VC3中按VC1。 – Jared 2014-09-10 17:21:27