UITextView子类中的viewDidLoad?

时间:2013-02-12 08:38:33

标签: iphone ios objective-c cocoa

Cocoa / Objective-C noob here。

我正在开发一个简单的应用程序,以便更多地了解iOS开发,并且很难看到我的UITextView子类如何调用它的viewDidLoad方法。

我将UITextView继承为CMTextView

使用情节提要,窗口中有CMTextView

CMTextView.m中,我有以下内容:

#import "CMTextView.h"

@interface UITextView ()

- (id)styleString;

@end

@implementation CMTextView

- (id)styleString {
    return [[super styleString] stringByAppendingString:@"; line-height: 1.1em"];
}

- (void)viewDidLoad {
    NSLog(@"LOADED!"); // not doing anything...
}

我没有做任何想要添加它作为我的窗口的子视图的东西,但我认为故事板为我做了这个?

有人有任何建议吗?

4 个答案:

答案 0 :(得分:5)

viewDidLoadUIViewController而不是UIView / UITextView

中的方法

如果您想进行任何初始化,请将其放入initWithFrame:

答案 1 :(得分:5)

如果手动初始化UITextView,上述答案是正确的。如果从笔尖加载它们,则需要覆盖-awakeFromNib方法。

-(void)awakeFromNib
{
    [super awakeFromNib]; // Don't forget to call super

    //Do more intitialization here
}


如果要处理调整大小,还要覆盖-layoutSubviews方法

答案 2 :(得分:2)

viewDidLoad是一种UIViewController方法(请参阅here)。

UIKit可确保在您实例化视图控制器的视图时在适当的时间调用viewDidLoad,但它在UIView UITextView中无法发挥作用。< / p>

通常,您会在initWithFrame时准备视图。

答案 3 :(得分:1)

视图永远不会有方法viewDidLoad。 有些方法仅限于视图控制器,viewDidLoad就是其中之一。

视图的方法构造函数是

-(id)init;
-(id)initWithFrame;