2014-03-05 101 views
0

我需要通過調用它的drawRect方法來自定義一個UIView,所以我繼承UIView並將其命名爲MyView。該繪圖將取決於某些變量(本例中爲myString),所以我需要在drawRect開始之前初始化變量。我MyView.h看起來像在drawRect被調用之前初始化自定義的UIView

@interface MyView : UIView 
@property (strong, nonatomic) NSString *myString; 
@end 

在viewController.m,如果我做了以下

MyView *myView = [MyView alloc] initWithFrame:someRect]; 
[myView setMyString:@"string value"]; 

[self.view addSubview:myView]; 

一切正常,將在的myString之前的drawRect設置被調用。

我想解決的問題是,如果我想通過使用界面生成器將MyView添加到視圖控制器(將UIView拖放到視圖控制器視圖並將其類更改爲MyView),那麼點我可以在drawRect被調用之前設置myString?

+1

這並不重要,如果是的drawRect設置變量之前調用。在設置變量後,您可以調用'[view setNeedsDisplay]'並且它將相應地重繪。如果這是通過'viewDidLoad'完成的,那麼用戶將永遠不會看到不正確的繪製視圖,但會在重繪正確的方式後看到它。 – Putz1103

+0

Armand DOHM的答案適合我,謝謝。 –

+0

你注意到我的評論是在他的答案前幾分鐘?我很高興你解決了它。 – Putz1103

回答

2

一套它在你的視圖控制器

-(void) viewDidLoad { 
    MyView *myView = self.view; 
    [myView setMyString:@"string value"]; 
] 
+0

我覺得這行'MyView * myView = self.view;'不適用於我的場景,因爲我將MyView放在視圖控制器(在界面生成器中)的視圖之上。但我確實嘗試過'[self.myView setMyString:@「string value」];',在設置值之前,drawRect仍然會先運行。 –

+0

更新:是的,它的工作原理。我之前把NSLog放在了錯誤的地方。謝謝你的答案。 –

相關問題