使用cocoa进行编码时,我注意到在定义sender
时没有必要使用IBAction
参数,因此采取以下措施:
- (IBAction)showUserInfo:(id)sender;
可以声明为
- (IBAction)showUserInfo;
所以我想知道除了发送动作的按钮/菜单项之外是否还有其他好处?只有我能想到的其他情况是几乎没有对象调用相同的IBAction。还有什么吗?
答案 0 :(得分:2)
Doc说,
sender 参数通常标识发送操作消息的控件(尽管它可以是由实际发件人替换的另一个对象)。这背后的想法类似于明信片上的回邮地址。如果需要,目标可以向发件人查询更多信息。
sender 参数可以帮助您从中获取任何数据。例如,在UISegmentControl值上更改,如在@Mark Adams中回答。因此,如果您不想要发件人的任何信息,您可以省略它,就像在- (IBAction)showUserInfo;
示例中一样。
答案 1 :(得分:1)
当您将方法连接到值可以更改并且您可能需要使用的UI对象时,使用sender
参数会很方便。
例如,如果我将方法连接到UISegmentedControl
并将其控制事件设置为UIControlEventValueChanged,我可以使用作为sender:
参数传递的对象来获取它的选定段索引然后,基于在值上,在UI中进行更改。
-(IBAction)segmentedControlValueChanged:(id)sender
{
UISegmentedControl *control = (UISegmentedControl *)sender;
// Show or hide views depending on the selected index of the segmented control.
if (control.selectedSegmentIndex == 0)
someView.hidden = YES;
else
someView.hidden = NO;
}