我有一个分段控件,用于在三个 View Controller 之间切换。我的第一个 tableview 嵌入在导航 Controller 中,其中分段控件位于导航 Controller 中。我在 Storyboard 中也有两个自定义转场(动画来自左侧和右侧)。在我的“主” Controller 类 - 分段控件的中间 - 我使用此代码
- (IBAction)indexChanged:(id)sender {
if ([sender selectedSegmentIndex] == 0) {
[self performSegueWithIdentifier:@"leftSegue" sender:self];
}
else if ([sender selectedSegmentIndex] == 1){
}
else {
[self performSegueWithIdentifier:@"rightSegue" sender:self];
}
}
这对这两个 Controller 非常有效。当这些 View Controller 放在屏幕上时,我仍然可以在最左边和最右边的 Controller 之间移动,但是在我尝试过的每一次尝试下回到主 Controller 都会崩溃。我认为这与我不理解我正在发送 performSegueWithIdentifier
消息的 self
或我传递给的 self
有关发件人:
。
示例:如果在 else if ([sender selectedSegmentIndex] == 1){}
中我创建了一个新的 segue,其中一个唯一标识符来自两个新 Controller 中的任何一个,应用程序崩溃拼写正确时说“接收器没有标识符”。谁是这个例子中的接收者?
编辑:我在此处添加了我当前的 Storyboard图片。前两个是自定义 segue,中间两个是模态和推送,特定于需求。
Edit2:使用像 self.navigationController.viewControllers[0]
这样的方法找到了正确的 View ,但它不允许我切换回初始 Controller - 它重绘它并失去导航栏。
最佳答案
在 Xcode 中,在“Breakpoint Navigator” View 中添加一个“Exception Breakpoint”。
启动您的应用程序,并尝试减少崩溃。
Xcode 现在应该在导致崩溃的指令处停止。
所以现在当你停止时,试着在调试区输入 po self
来获取哪些类是接收者,它可能会帮助你理解发生了什么......
关于ios - 使用带有分段控制的 Storyboard Segues,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25769506/