2010-08-31 30 views
1

我在UIViewController中有一個UIView,我在viewDidAppear方法中添加了一個自定義子視圖。如何使用自定義子視圖更新或重置UIView?

MyView *myView = [[MyView alloc] initWithLabelText:text]; 
[self.view addSubview:myView]; 
[myView release]; 

text變量是在myView的標籤上使用的字符串。每當您回到當前視圖時,此text都會更改。但似乎viewDidAppear不重新加載視圖 - 它反而加載一個新的視圖 - 所以我有兩個標籤在彼此。

我試着用viewWillAppear但它沒有任何區別。我也嘗試使用[self.view setNeedsDisplay] - 沒有幫助。我也試圖讓myView成爲一個實例變量,但它也沒有幫助。

什麼工作是明確移除來看,當我宣佈它作爲一個實例變量:

- (void)viewDidDisappear:(BOOL)animated 
{ 
    [_myView removeFromSuperview]; 
} 

雖然這個解決辦法,我想又回到了它,當簡單地重置視圖。有誰知道如何做到這一點?我會很感激它;)

回答

0

不要每次都分配和初始化自定義子視圖,只有第一次調用viewDidAppear。然後將其保留在物業中供以後使用。

+0

謝謝。但是它必須再次成爲一個實例變量,不是嗎? – marikaner 2010-08-31 01:03:02

+1

不一定,但是也是屬性的實例變量是一個好地方,因爲這有助於管理保留計數。 (並確保不要用相同名稱的局部變量「覆蓋」實例變量,或者錯誤地在另一個對象中使用實例變量)。 – hotpaw2 2010-08-31 01:32:36

0

下面的事情可以考慮。

viewDidLoad - > alloc和init你的子視圖 viewDidAppear - >更新子視圖 dealloc - >釋放子視圖。

+0

謝謝。是的,這就是我所做的。但在這裏我也必須使用實例變量而不是局部變量。我認爲應該有一種方法來「重新加載」整個視圖。 – marikaner 2010-08-31 16:45:55

相關問題