我已经创建了自己的自定义视图,它有自己的标题和主文件以及相应的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
类中的代码。但我希望能够与每个视图进行交互并相应地更改属性。任何帮助都会很棒!
答案 0 :(得分:1)
一般的经验法则是:如果从代码加载它,则用代码连接它。
反过来:
如果您在IB中实例化,则可以在IB中连接插座和操作。
在这里,您要在代码中加载视图,因此您必须手动连接它们。
如果您希望能够在IB中连接内容,请在IB中添加UIVIew并将子类更改为PointsBarView。 IB将神奇地读取PointsBarView.h文件,您应该能够连接插座,目标和操作。