2010-11-07 85 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方法取決於你是否喜歡做一流的性能相類變量。

相關問題