我想在基于导航的应用中创建一个类似于地址簿应用的“详细视图”。
我想创建一个UIView
,其UIImageView
和UILabel
可以在导航控制器推送时传递给UITableVIew
的tableHeaderView属性。标签文本和图像必须在加载时从托管对象上下文中获取信息。
我开始尝试使用IB执行此操作,但是当标签文本无法更新时,无论我放置myView.UILabel.text = @"some new text"
的位置,都会厌倦。它只是一直显示我在IB检查员窗口中输入的文本。
因此,如果不使用IB,我将如何创建其中包含UIView
和UILabel
的{{1}}?
我应该创建一个属于UIImageView
或UIViewController
的子类的新类吗?
如何创建标签和图像的子视图?
在代码中应该在哪里设置文本和图片网址? (viewDidLoad或loadView或viewWillLoad)(UIView,UIViewController,detailViewController)?
答案 0 :(得分: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方法中正确清理内存,具体取决于你是否喜欢make class properties vs class variables。