2014-03-05 56 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放在了错误的地方。谢谢你的答案。 –

相关问题