ios - 使用带有分段控制的 Storyboard Segues

标签 ios objective-c storyboard segue uisegmentedcontrol

我有一个分段控件,用于在三个 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/

相关文章:

ios - 如果轻轻触摸,Force Touch 动画会卡住

ios - 未调用文件提供程序 iOS11 startProvidingItem

ios - 显示(推送)Segue 留下上一个 View 的印记

ios - 如何复制self.title?

iphone - Default.png 显示在模拟器中但不显示在真实设备 iphone 上?

ios - 下载图像后,在自定大小的 tableview 单元中重新加载约束或更新高度

objective-c - 将 CSV 文件转换为 NSDictionaries 的 NSArray

uitableview - ios 7 自定义 UITableViewCell 的内容 View

xcode - 使用 Storyboard的应用程序中没有宽度的初始窗口

ios - 按下 UIAlert 按钮后更改 Storyboard