子类化UIViewControllers视图

时间:2011-10-04 19:26:42

标签: iphone objective-c ios uiview uiviewcontroller

所以例如我在我的uiviewcontroller中有这个

- (void)loadView {
    CGRect frame = [[UIScreen mainScreen] applicationFrame];
    MyDetailView *detailView = [[MyDetailView alloc] initWithFrame:frame];
    self.view = detailView;
    [detailView release];
}

现在我在我的视图中添加了一些标签,例如

@property(nonatomic, retain) UILabel *descriptionLabel;

如果我想在我的ViewController中设置它,我通常会做类似

的事情
self.view.descriptionLabel.text = @"foo";

因为这会产生一个警告我把它带到

[[(MyDetailView*)self.view descriptionLabel] setText:@"foo"];

有更好的方法吗? F.E.告诉我的ViewController,view属性是一个子类?有没有办法,或者我应该在另外的ivar中保存我的详细视图?

感谢您的提示!

3 个答案:

答案 0 :(得分:1)

我不相信你所演示的内容有什么不妥。我可能会稍微改写一下,但这可能是一个偏好问题:

myView = (MyDetailView *)[self view];
[myView setDescriptionLabel:@"foo"];

答案 1 :(得分:0)

你编写它的方式,看起来你正在将UILabel设置为NSString值,所以这可能只是一个编辑。你试过吗

self.view.descriptionLabel.text = @"foo";

答案 2 :(得分:0)

如果您想以编程方式执行,isaac的答案很棒。只需将自定义视图设置为自己的变量,就可以在文件的任何位置绘制信息并从中传递信息。这个答案只是添加到您的选项的替代方案。如果您在IB中完成此操作,最简单的方法是选择视图控制器的View并将Class从默认的UIView设置为您的自定义MyDetailView。然后调用self.view将直接访问自定义视图的属性。