2010-11-07 84 views
1

我想在我的基于导航的应用程序中创建一个类似于地址簿应用程序的“详细视图”。以编程方式创建一个自定义UIView作为tableHeaderView

我想创建一个UIView有一个UIImageViewUILabel当由导航控制器推,我可以把信息传给UITableVIew的tableHeaderView财产。标签文本和图像在加载时必须从托管对象上下文获取信息。

我开始尝试使用IB来做这件事,但当标签文本不会更新时,无论我把myView.UILabel.text = @"some new text"放在哪里,都会厌倦。它只是不断呈现我在IB检查员窗口中输入的文本。

因此,如果不使用IB,我将如何创建一个UIView,其中包含UILabelUIImageView

我应该创建一个新的类,它是UIViewControllerUIView的子类吗?

我该如何去创建标签和图像的子视图?

应该在代码中设置文本和图像URL的位置? (viewDidLoad或loadView或viewWillLoad)(UIView,UIViewController,detailViewController)?

回答

1

如果您开始使用IB并且UILabel文本不会更新,那么您的视图控制器的IBOutlet听起来就像没有正确连接到IB中的标签。

希望这会解决您使用IB的问题。在viewController代码中,您应该更新viewDidLoad中的文本。

但是,如果你想以编程方式做到这一点,我会做一个UIView的子类(不是UIViewController)。

而且我会重写initWithFrame并完成所有设置。

类似以下内容:

myView.m

@implementation myView 

@synthesize imageView, myLabel; 

- (id) initWithFrame:(CGRect) frame 
{ 
    if (self = [super initWithFrame:frame]) { 

     // Setup your image view and add it to the view. 
     self.imageView = [[[UIImageView alloc] initWithFrame:initWithFrame:frame] autorelease]; 
     self.imageView.image = ... 
     [self addSubview:self.imageView]; 

     // Setup your label 
     self.myLabel = [[[UILabel alloc] initWithFrame:frame] autorelease]; 
     self.myLabel.text = @"whatever you like"; 
     [self addSubview:self.myLabel]; 
    } 
    return self; 
} 

确保正确清理内存在课程的dealloc方法取决于你是否喜欢做一流的性能相类变量。

相关问题