ios 如何从父类使用IBOutlet?

3yhwsihp  于 2023-04-13  发布在  iOS
关注(0)|答案(4)|浏览(123)

我在iOS上工作,在从父类访问IBOutlet时遇到了一些麻烦,在这种情况下,是一个带有角色生命的标签。
我的ViewController(parent)是这样的:

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

OpponentView(child)类是角色(图像)所在的地方,也是玩家进行所有触摸交互的地方。当玩家触摸OpponentView时,标签应该被刷新。

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

}

谢谢。

ukxgm1gy

ukxgm1gy1#

如果我没有理解错您的问题,您希望在检测到opponentView中的触摸时更新opponent_life

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;
}
vyswwuz2

vyswwuz22#

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

bvn4nwqk

bvn4nwqk3#

我可能误解了你遇到的问题,但是如果你根本看不到示例变量作为outlet,你可以尝试在属性声明中包含IBOutlet。例如:

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

kokeuurv4#

在代码中,OpponentView类是一个扩展任何类的类,如UIViewUIImageView等。
因此,您必须将UIViewUIImageView(根据要求)从Library中拖动到IBOutlet中的OpponentViewController's视图。
然后将检查器中“viewIdentity”中的类更改为OpponentView。然后您可以链接到文件所有者。
这样你就可以解决你的问题。

相关问题