gpt4 book ai didi

ios - 为另一个类添加目标

转载 作者:行者123 更新时间:2023-11-29 13:11:38 25 4
gpt4 key购买 nike

我有一个 UIView,它有一些我需要添加操作的按钮。

我试过这个:

 HeaderViewController * header = [[HeaderViewController alloc]initWithNibName:@"HeaderViewController" bundle:[NSBundle mainBundle]];

[header.aboutUs addTarget:self action:@selector(aboutUsPage:) forControlEvents:UIControlEventTouchUpInside];
[header.MyLibrary addTarget:self action:@selector(myLibraryPage:) forControlEvents:UIControlEventTouchUpInside];
[self.tableView addParallaxWithView:header.view andHeight:229];

但是按钮一点 react 都没有。

我做错了什么。

最佳答案

事情是这样的,您正在创建 View Controller ,然后为被引用为 View Controller 属性的按钮设置目标和操作。

我怀疑如果您在设置目标和操作之前记录或放置断点然后单步执行,则按钮将为零。

View Controller 延迟加载它们的 View 。因此,尽管您已经创建了 View Controller ,但您还没有要求它加载它的 View 。所以按钮还没有从 Nib 创建。因此属性为零,并且未设置目标操作。

修复它的第一个选项是移动最后一行,使其看起来像这样:

[self.tableView addParallaxWithView:header.view andHeight:229];
[header.aboutUs addTarget:self action:@selector(aboutUsPage:) forControlEvents:UIControlEventTouchUpInside];
[header.MyLibrary addTarget:self action:@selector(myLibraryPage:) forControlEvents:UIControlEventTouchUpInside];

这样你就可以调用 View ,它会初始化它,并且按钮参数在这之后不应该是 nil。

做这种事情的更经典的方法是定义一个协议(protocol)来响应按钮上的点击,并使调用 View Controller 成为实现协议(protocol)方法的委托(delegate)。这样您只需在创建对象时设置委托(delegate),而不必每次都配置按钮。

关于ios - 为另一个类添加目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17190642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com