2012-09-24 149 views
4

我有一個完美的工作項目,直到我更新到ios6。UIViewControllerHierarchyInconsistency在ios​​5中工作,但不在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關聯....這是怎麼回事???

很想這個問題你的幫助...... jstuck整天吧..

感謝

+0

我剛剛得到了同樣的錯誤。我將其縮小到我的從UIView到EAGLView(EAGLView * eagl =(EAGLView *)self.view)的陣容。我仍然不確定是什麼原因造成了這個...... – Diamondo25

+0

我認爲這個問題與UIPopoverController有關......但是當我試圖用UIViewController BookTestDrive做任何動作時,斷點就停在這些動作上....一些錯誤。 ..並且我不知道它是什麼 – hsn

+0

升級到ios 6後,對我來說同樣的錯誤。'UIViewControllerHierarchyInconsistency',原因:'一個視圖最多隻能與一個視圖控制器關聯!查看>與關聯。在將此視圖與關聯之前清除此關聯。 –

回答

2

加載大量的廈門國際銀行文件時,我也有這種情況發生。解決方案是進入界面構建器並刪除與文件所有者具有相同類名的任何視圖控制器對象。所以在我的情況下,這些文件現在只包含連接到文件所有者的視圖和子視圖 - 沒有控制器。

在解釋xib文件時,iOS 6中的某些東西一定會發生變化。

+0

謝謝,我遵循你的建議...我刪除了xib文件中的ViewController,一切正常。想知道爲什麼這是改變了ios 6 – hsn

+0

真棒很高興聽到:) –

-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]; 

從控制器到視圖(反之亦然)是不需要分配的。

我會建議通過你的popover控制器和內容控制器來查找控制器和視圖之間的任何直接分配。

+0

這不工作....當我嘗試它的nibviews數組只包含1項。 – hsn

+1

我會在界面構建器中查看您的xib文件,並查看它是否包含位於其中的視圖和控制器。當您選擇視圖控制器並查看連接檢查器時,應該連接到位於同一個xib文件中的視圖。 – TakMan

+0

實際上,對我而言,是我從xib文件中刪除了視圖控制器,只有視圖文件...然後一切正常。 – hsn

相關問題