一个视图一次最多只能与一个视图控制器关联(UISegmentedControl)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个视图一次最多只能与一个视图控制器关联(UISegmentedControl)相关的知识,希望对你有一定的参考价值。

您好,错误发生在ios6的模拟器中。

*** Terminating app due to uncaught exception 'UIViewControllerHierarchyInconsistency', reason: 'A view can only be associated with at most one view controller at a time! View <UIView: 0xa3ae880; frame = (0 0; 320 367); autoresize = W+H; layer = <CALayer: 0xa3ae8e0>> is associated with <SearchHotelsViewController: 0xa3a6a20>. Clear this association before associating this view with <SecondViewController: 0xa1a9e90>.'

初始化代码

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;

选择时应用崩溃== 1

-(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

“

答案

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

另一答案

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

另一答案

当我从情节提要板中复制/粘贴到xib文件时遇到了此问题。从xib重新创建界面为我解决了此问题。

另一答案

我有类似的问题。多个xib文件(有些起作用,有些却没有)都只有一个UITableView。我必须删除损坏的xib文件并创建新文件。之后,他们都工作了。

另一答案

我也遇到了这个,这是我的情况。

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

无需删除和重新创建。

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

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

111

以上是关于一个视图一次最多只能与一个视图控制器关联(UISegmentedControl)的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 4.5 黑屏或异常:“一个视图一次只能与一个视图控制器关联!”

UISearchController - 与子视图控制器不兼容

IOS 6 上的应用程序崩溃 - UIViewControllerHierarchyInconsistency

每次加载视图时只能调用一次 layoutIfNeeded - 例如视图加载?

drf序列化高级自定义只读只写序列化覆盖字段二次封装Response数据库查询优化(断关联)十大接口视图家族自动补全图片链接

《iOS Human Interface Guidelines》——Tab Bar