Ios 在调用drawRect之前初始化自定义UIView

Ios 在调用drawRect之前初始化自定义UIView,ios,uiview,Ios,Uiview,我需要通过调用UIView的drawRect方法来定制UIView,因此我将UIView子类化并将其命名为MyView。绘图将依赖于某个变量(本例中为myString),因此我需要在drawRect启动之前初始化该变量。我的MyView.h看起来像 @interface MyView : UIView @property (strong, nonatomic) NSString *myString; @end 在viewController.m中,如果执行以下操作 MyView *myView

我需要通过调用UIView的drawRect方法来定制UIView,因此我将UIView子类化并将其命名为MyView。绘图将依赖于某个变量(本例中为myString),因此我需要在drawRect启动之前初始化该变量。我的MyView.h看起来像

@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之前设置


我试图解决的问题是,如果我想使用Interface Builder将MyView添加到视图控制器中(将UIView拖放到视图控制器的视图中,并将其类更改为MyView),在调用drawRect之前,我可以在何处设置myString?

在视图控制器中设置它

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

在设置变量之前是否调用drawrect并不重要。设置变量后,可以调用
[view setNeedsDisplay]
,它将相应地重新绘制。如果这样做是在
viewDidLoad
中进行的,那么用户将永远不会看到绘制不正确的视图,而是会在以正确的方式重新绘制后看到它。Armand DOHM的答案对我有用,谢谢。你注意到我的评论是在他回答之前几分钟?我很高兴你把它解决了。我想这行
MyView*MyView=self.view将不适用于我的场景,因为我将MyView放在视图控制器视图的顶部(在Interface Builder中)。但我确实尝试了
[self.myView setMyString:@“string value”],在设置值之前drawRect仍然首先运行。更新:是的,它可以工作。我以前把NSLog放错地方了。谢谢你的回答。