如何使用父类的IBOutlet?

时间:2010-12-02 04:03:46

标签: iphone objective-c ios

我正在使用iOS并且在从父类访问IBOutlet时遇到一些问题,在这种情况下是一个带有该字符生命周期的标签。

我的ViewController(父级)是这样的:

@interface OpponentViewController : UIViewController {
IBOutlet UILabel *opponent_life;
IBOutlet OpponentView *opponentView;
}
@end

OpponentView(子)类是角色(图像)所在的位置,玩家可以触摸互动。当玩家触摸OpponentView时,标签应该刷新。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

} 

感谢。

4 个答案:

答案 0 :(得分:0)

OpponentView应该是UIImageView之类的子类,例如。

答案 1 :(得分:0)

我可能会误解您遇到的问题,但如果您根本看不到实例变量,则可以在属性声明中尝试包含IBOutlet。例如:

@property (nonatomic, retain) IBOutlet UILabel *opponent_life;
@property (nonatomic, retain) IBOutlet OpponentView *opponentView;

答案 2 :(得分:0)

在代码中,OpponentView类可以扩展任何类,如UIViewUIImageView等。

因此,您必须将UIViewUIImageView(根据要求)拖到图书馆OpponentViewController's的{​​{1}}视图中。

然后将检查器中“viewIdentity”中的类更改为IBOutlet。然后您可以链接到文件所有者。

这样你就可以解决问题了。

此致

萨蒂亚

答案 3 :(得分:0)

如果我正确理解您的问题,您希望在opponent_life中检测到触摸时更新opponentView。以下是将标签分配给视图的两种方法,以便可以在tocuhesBegan:withEvent:

中使用它

1。将标签分配给IB

中的视图
@interface OpponentView : UIView {
  IBOutlet UILabel *opponent_life;
}

OpponentViewController的nib文件中,您将视图类型从UIView更改为OpponentView,然后将标签连接到视图的插座。

2。在viewDidLoad

中分配标签
@interface OpponentView : UIView {
  UILabel *opponent_life;
}

@property (nonatomic, retain) UILabel *opponent_life;

在“OpponentViewController”

- (void)viewDidLoad {
  [super viewDidLoad];
  opponentView.opponent_life = opponent_life;
}