如何以编程方式将uicontroller与自定义uiview相关联

时间:2010-02-06 17:50:57

标签: iphone uiview uiviewcontroller

我有一个以编程方式创建的自定义UIview。如何关联自定义UIViewController(以编程方式)

谢谢和问候,

2 个答案:

答案 0 :(得分:5)

loadView中实施UIViewController,以编程方式创建视图层次结构,而不使用nib文件。

- (void)loadView {
    // allocate the subclassed UIView, and set it as the UIViewController's main view
    self.view = [[[UIViewSubclass alloc] initWithFrame:CGRectMake(0, 0, 320, 460)] autorelease];
}

您可以通过两种方式继续设置视图/子视图层次结构。一种是在自定义UIView的初始化方法中添加它们,如下所示:

// in the MyView.m file
- (id)initWithFrame:(CGRect)f {
    if (self = [super initWithFrame:f]) {
        // add subviews here
    }
    return self;
}

第二种方法是继续使用loadView子类中实现的UIViewController方法,并使用[self.view addSubview:anotherView]。 (或者,使用viewDidLoad中的UIViewController subclass方法。)

注意:将initWithFrame:替换为自定义UIView的初始化方法(例如initWithDelegate:)。

答案 1 :(得分:1)

假设您创建的视图名为newView,控制器为newController。简单的方法是:

newController.view = newView;

但我宁愿继承UIViewController并覆盖其- (void)loadView- (void)viewDidLoad方法,并在那里创建和/或操纵视图 - 这就是Apple希望您这样做的方式,并且有充分的理由。