基本上我需要在一个视图中有几个按钮。我希望他们都调用一个函数,以便我可以跟踪“状态”。
如何判断哪个按钮调用了该功能?反正有没有得到发件人的文本?
基本上我需要在一个视图中有几个按钮。我希望他们都调用一个函数,以便我可以跟踪“状态”。
如何判断哪个按钮调用了该功能?反正有没有得到发件人的文本?
在 iOS 操作方法中,包括 IBAction 方法,可以具有以下任何签名(请参阅“ UIKit 中的 Target-Action ”):
- (void)action
- (void)action:(id)sender
- (void)action:(id)sender forEvent:(UIEvent *)event
如果您使用接受发送者的方法签名,那么您可以访问触发该操作的对象。然后,您可以访问调用对象的属性,包括其标题和标签。您还可以将发送者与您可能已经拥有的按钮指针进行比较,以确定哪个按钮是此特定事件的发送者。
我喜欢比较指针,因为我相信它比orif (sender == self.nextPageButton)
更容易理解并且不太可能破坏。查看 IB 中的标签并不能告诉您代码假设它们的含义以及它们是否重要。标题会随着您更新 UI 或本地化应用程序而更改,这些更改也不需要更改代码。if (sender.tag == 4)
if ([((UIButton *)sender).currentTitle isEqualToString:@"foo"])
设置tag
按钮的属性。
您可以在 Interface Builder 中执行此操作(只需查看字段)。
然后在代码中:
if (sender.tag == 0) {
} else if (sender.tag == 1)
等等
您无需明确设置标签。您可以在 .h 文件中定义 UIButton 的 IBOutlets 及其属性以及
@property (nonatomic , retain) IBOutlet UIButton *myButton;
和方法为
-(IBAction) browse : (id) sender;
在 .m 文件中,您可以将该方法实现为
-(IBAction) browse : (id) sender{
if((UIButton *)sender == myButton){/*add the action here*/}
}
在方法中为您希望的任意数量的按钮添加更多 if 语句。请连接所有相应按钮的 IBOutlets 以及选择器浏览。
请记住在 dealloc 方法中释放 IBOutlets 以防止任何内存泄漏。
希望这可以帮助!!