4

在我更新到 ios6 之前,我有一个完美的工作项目。

当我在一个栏项目上标签以显示一个带有视图的弹出窗口时,应用程序崩溃了......

这是我得到的错误

    "reason: 'A view can only be associated with at most one view controller at a time! View <UIView: 0xaa7d730; frame = (20 0; 748 1024); autoresize = RM+BM; layer = <CALayer: 0xaa7d790>> is associated with <TYOFormViewController: 0xaa7d8b0>. Clear this association before associating this view with <TYOFormViewController: 0x14c68a70>.'"

这是声明 UIViewController 和 UIPopoverController 的方法。

    - (IBAction)TestDriveTapped:(id)sender{
if (PopoverController != nil) {
    [PopoverController dismissPopoverAnimated:YES];
    self.PopoverController = nil;
}
if (self.PopoverController == nil) {
    UIViewController *bookTestDrive =[[TYOFormViewController alloc] initWithNibName:@"TYOBookTestDriveForm" bundle:nil];

   UIPopoverController *poc  = [[UIPopoverController alloc]
                           initWithContentViewController:bookTestDrive];

   [poc presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
     self.PopoverController = poc;
} else {
    if (PopoverController != nil) {
        [PopoverController dismissPopoverAnimated:YES];
        self.PopoverController = nil;
    }
}

}

错误说我必须清除与 TYOFormViewController 的关联才能将其与 TYOFormViewController 关联....这是怎么发生的???

希望你能在这个问题上得到你的帮助......整天都被它困住了......

谢谢

4

2 回答 2

2

我在加载一堆 xib 文件时也发生了这种情况。解决方案是进入界面生成器并删除与文件所有者具有相同类名的任何视图控制器对象。所以在我的情况下,这些文件现在只包含视图和子视图,连接到文件的所有者 - 没有控制器。

在解释 xib 文件时,iOS 6 的底层肯定发生了一些变化。

于 2012-09-27T14:16:10.440 回答
-1

iOS 6 稍微改变了视图/控制器的处理。这打破了我的应用程序中加载了 xib 的内容的弹出框,我遇到了和你一样的错误。我发现我已经在我的原始(损坏的版本)中手动分配并初始化了视图控制器代码,然后手动将视图分配给它(实际上忽略了 xib 中的控制器)。在以前的 iOS 版本中运行良好,但不是 6.0。

我的解决方法是清理代码,摆脱手动创建视图控制器,让 iOS 从 xib 为我加载它。

  NSArray* nibViews =  [[NSBundle mainBundle] loadNibNamed:@"InfoView" owner:self options:nil];
  InfoView* infoView = [ nibViews objectAtIndex: 0];
  InfoViewController *infoViewController = [ nibViews objectAtIndex: 1];

不需要从控制器分配给视图(反之亦然)。

我建议您同时查看弹出框控制器和内容控制器,以查找控制器和视图之间的任何直接分配。

于 2012-09-27T19:46:59.147 回答