【问题标题】:A view can only be associated with at most one view controller at a time (UISegmentedControl)一个视图一次最多只能关联一个视图控制器(UISegmentedControl)
【发布时间】:2012-11-01 16:58:47
【问题描述】:

你好 iOS 6 上的模拟器出现错误。

由于未捕获的异常“UIViewControllerHierarchyInconsistency”而终止应用程序,原因:“一个视图一次最多只能与一个视图控制器关联!查看 > 与 相关联。在将此视图与 关联之前清除此关联。'

初始化代码

UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Поиск туров", @"Выбор отеля", nil]];

segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
self.navigationItem.titleView = segmentedControl;

[segmentedControl addTarget:self action:@selector(changeSegments:) forControlEvents:UIControlEventValueChanged];
segmentedControl.selectedSegmentIndex = 0;
self.navigationItem.title = [segmentedControl titleForSegmentAtIndex:segmentedControl.selectedSegmentIndex];
[self setView:searchTours];

SearchHotelsViewController *searchHotelsController = [[SearchHotelsViewController alloc] initWithNibName:@"SearchHotelsViewController" bundle:[NSBundle mainBundle]];
selectHotels = searchHotelsController.view;

selected == 1true 时应用崩溃

-(void)changeSegments:(id)sender {
    NSInteger selected = [sender selectedSegmentIndex];
    if (selected == 0) {
        [self setView:searchTours];
    }
    if (selected == 1) {
        [self setView:selectHotels];
    }
    self.navigationItem.title = [sender titleForSegmentAtIndex:selected];
}

我不明白问题出在哪里。

SearchHotelsViewController.xib

【问题讨论】:

    标签: objective-c ios6


    【解决方案1】:

    确保您的 ViewController 不包含另一个视图控制器对象。例如,如果您的主视图控制器有一个 tableview,请不要将 UITableViewController 放在其中。它曾经在 iOS 5 中传递,但在 iOS 6 中他们不会允许这样做。

    【讨论】:

      【解决方案2】:

      当我是个白痴时,我遇到了这个问题,并将“UITableViewController”对象拖到笔尖中以用作视图而不是“UITableView”。哎呀!

      【讨论】:

      • 哈哈,我也做了同样的事情。谢谢!
      • 我做了类似的事情,创建了一个 XIB 并添加了一个 UIViewController->UIView 而不是简单地添加 UIVIew...
      【解决方案3】:

      我也遇到过,这是我的情况。

      为了方便起见,我将“UIViewController”对象从情节提要拖到了 nib 文件中

      无需删除和重新创建。

      在nib文件中,我将视图对象从控制器对象中拖了出来,然后删除了控制器对象。

      并将视图对象出口设置为其真正的唯一所有者“viewController 类”,也在 nib 中。


      更多细节:

      • 原始的,你复制的内容

      • 第一步,拖拽删除

      • 第二步,链接

      • 完成,检查一下

      【讨论】:

        【解决方案4】:

        我从 Storyboard 复制/粘贴到 xib 文件时遇到了这个问题。从 xib 重新创建界面为我解决了这个问题。

        【讨论】:

        • 无需重新创建界面。只需将“视图”从“视图控制器”中拖出并将其链接到“文件的所有者”。不要忘记删除“视图控制器”
        【解决方案5】:

        我遇到了类似的问题。多个 xib 文件,有些有效,有些无效,都有一个 UITableView。我不得不删除损坏的 xib 文件并创建新文件。之后他们都工作了。

        【讨论】:

          【解决方案6】:

          如果您尝试将 xib 文件设置为视图控制器,您的 xib 文件对象必须是窗口对象而不是视图控制器,并且您的 xib 文件的所有者类必须是您的目标视图控制器类。然后你应该在主视图与文件的所有者出口之间添加一个关系。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-03-14
            • 1970-01-01
            • 2021-09-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多