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

End*_*vet 16 objective-c ios6

Hello在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>.'
Run Code Online (Sandbox Code Playgroud)

初始化代码

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;
Run Code Online (Sandbox Code Playgroud)

选中时,应用程序崩溃== 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];
}
Run Code Online (Sandbox Code Playgroud)

我无法理解问题出在哪里.

SearchHotelsViewController.xib

SearchHotelsViewController.xib

msk*_*skw 21

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


jai*_*ime 15

当我是一个白痴时,我遇到了这个问题,并将一个"UITableViewController"对象拖到nib中作为视图而不是"UITableView".哎呦!

  • 我做了类似的事情,创建了一个XIB并添加了一个UIViewController-> UIView而不是简单地添加UIVIew ... (3认同)

den*_*pro 9

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

为了方便起见,我将一个“UIViewController”对象从故事板拖到了 nib 文件中

无需删除和重新创建。

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

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

111


更多细节:

  • 原始的,你复制的

111

  • 第一步,拖拽删除

222

  • 第二步,链接

333

  • 完成,检查它

666


Stu*_*ner 8

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


小智 2

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