2014-01-24 32 views
0

我在一個塊中初始化SubViewController。我將視圖控制器的視圖添加爲我的MainViewcontroller的子視圖。我的SubViewController中有一些按鈕邏輯。 現在發生什麼事,當我按下子視圖中的按鈕時,應用程序崩潰,因爲SubViewController已經被釋放。塊初始化ViewController獲得釋放到早期

恐怕這是一個主要的設計問題 - 但目前我沒有任何線索如何避免這種情況。

這初始化的樣子在我的語句塊

__strong AAFBPostView *newPost = [[AAFBPostView alloc]init]; 
newPost.view.frame = CGRectMake(0, 300, 320, 88); 
[self.view addSubview:newPost.view]; 
[newPost setData:result]; //passing some data to the view 

回答

1

您應該使用的容器視圖控制器的API。這些都在UIViewController的文檔中涵蓋。

一旦newPost變量超出範圍,代碼的問題是沒有強烈提及AAFBPostView視圖控制器。順便說一句 - 你的視圖控制器的類名應該是AAFBPostViewController。當前名稱意味着它是一個視圖,而不是視圖控制器。

通過使用容器API,父視圖控制器保留對子視圖控制器的引用,以便解決問題。

詳細信息可在「View Controller Programming Guide for iOS」的Creating Custom Content View Controllers部分找到。

+0

是的,你說得對,名字有點亂。我會看看容器視圖控制器 – arnoapp

+0

我用一個你應該檢查的鏈接更新了我的問題。 – rmaddy

+0

添加一行:'[self addChildViewController:newPost];'解決了我的問題!太好了謝謝!我無法相信,在將近2年的iOS開發之後,我從未看到過這個問題:/ – arnoapp