发布子类UIView

时间:2011-02-26 22:57:32

标签: iphone uiview

我已经创建了自己的自定义视图,它有自己的标题和主文件以及相应的nib(.xib):

标题文件

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

@interface PointsBarView : UIView 
{
    IBOutlet UIView *pointsBarView; 
    IBOutlet UIView *pointsCounterView; 
    IBOutlet UILabel *pointsTotalLabel;
    UIImageView *handImageView;
    UIImageView *powerBarOutlineImageView;
}

@property (nonatomic, retain) IBOutlet UIView *pointsCounterView;   
@property (nonatomic, retain) IBOutlet UIView *pointsBarView;
@property (nonatomic, retain) IBOutlet UILabel *pointsTotalLabel;
@property (nonatomic, retain) IBOutlet UIImageView *handImageView;
@property (nonatomic, retain) IBOutlet UIImageView *powerBarOutlineImageView;

@end

我正在合成main中的所有内容,然后在另一个UIViewController类中我正在尝试加载此视图。我设置了它的属性:

@property (nonatomic, assign) IBOutlet PointsBarView *pointsBarView;

并按原样添加:

NSArray* nibViews =  [[NSBundle mainBundle] loadNibNamed:@"PointsBarView" owner:self options:nil];
    pointsBarView = [nibViews objectAtIndex: 0];    

    [[self view] addSubview:pointsBarView];

如何在我的NIB中访问这些子视图?它们是否需要嵌入pointsBarView? (pointsBarView引用NIB的主视图,所有其他视图都在pointsBarView内。它们是否应该是NIB的一个单独部分,我需要为每个人显示addSubview

我应该注意,如果我没有连接PointsBarView中的任何属性,那么视图就会显示我的UIViewController类中的代码。但我希望能够与每个视图进行交互并相应地更改属性。任何帮助都会很棒!

1 个答案:

答案 0 :(得分:1)

一般的经验法则是:如果从代码加载它,则用代码连接它。

反过来:

如果您在IB中实例化,则可以在IB中连接插座和操作。

在这里,您要在代码中加载视图,因此您必须手动连接它们。

如果您希望能够在IB中连接内容,请在IB中添加UIVIew并将子类更改为PointsBarView。 IB将神奇地读取PointsBarView.h文件,您应该能够连接插座,目标和操作。