2014-10-16 53 views
0

我在我的一個項目中實現了第三方控制器MDSpreadView。我只是簡單地包含了與它有關的所有文件,包括xib。將其稱爲子視圖。作爲UIView中的子視圖調用UIViewController視圖的問題

調用視圖的層次結構是這樣的:有一個uiviewcontroller,我在其中添加UIView作爲子視圖,並從該子視圖調用uiviewcontroller作爲子視圖。

 MDViewController *MDvc = [[MDViewController alloc]initWithNibName:@"MDViewController_iPhone" bundle:nil ]; 
    [self addSubview:MDvc.view]; 

看起來不錯,但,當我觸摸滾動或選擇或任何東西,在選擇代理時Thread 1:EXC_BAD_ACCESS錯誤。鑑於代表在演示項目中的實現。

這裏是圖像

我知道有呼籲子視圖的一些問題。我該如何解決這個問題?

回答

0

從一個控制器中取出視圖並將其作爲子視圖插入到其他控制器中的想法是崩潰的常見原因。如果必須這樣做,請確保原始控制器(本例中爲MDViewController)未被釋放。你可以通過使它成爲劫持其視圖的對象的強大屬性來做到這一點,或者更好地查看文檔以瞭解如何實現容器控制器。

+0

我正在研究它,謝謝指出我在正確的方向。如果你能幫助我一些好東西,你的努力將會受到高度讚賞。 – 2014-10-17 11:27:06

0

最後瞭解如何處理多個視圖,尤其是當您有子視圖和viewcontroller時。解決方案非常簡單,在這種情況下,您需要有代表,或者蘋果給出的是NSNotification。我通過NSNotification解決了我的問題。上的按鈕按下(來自其中i必須調用其它視圖)我發佈這樣一個通知:

 [[NSNotificationCenter defaultCenter] postNotificationName:@"WhatEverYouWantTocallIt" object:nil]; 

和I,其中我需要調用,像這樣的類添加觀察者:

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(bringSpreadViewToFront) name:@"WhatEverYouWantTocallIt" object:nil]; 

並增加了一個選擇,在選擇ü應根據情況處理它,你有我這樣做:

- (無效){bringSpreadViewToFront

​​

}

我首先刪除了子視圖,然後呈現我的視圖控制器,呈現推送它的選擇。它的作品完美..乾杯:)

謝謝菲利普推動我接近解決方案的方向。

相關問題