OGeek|极客世界-中国程序员成长平台

标题: iphone - 如何以编程方式判断 IBAction 是否已被代码或用户操作调用 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 08:55
标题: iphone - 如何以编程方式判断 IBAction 是否已被代码或用户操作调用

如何以编程方式判断 IBAction 是由代码调用还是由用户操作调用。

例如 我有一个方法,-(IBAction)som​​eMethodWithItsid)sender 我已将其链接到 UISegmentedControl 上的 valueChanged。

可以调用,

  1. 用户不断变化的分割
  2. 在代码中设置 selectedIndex
  3. 调用 [self someMethodWithIts:foo];

有没有办法区分调用是否来自第一种方式?

干杯

山姆



Best Answer-推荐答案


如果您可以将 nil 作为发送者(这是传统的)传递并使用它来指示它是通过编程方式发送的,那没关系。但是我认为其他任何东西都太脆弱了,你应该像这样分解代码:

- (void)someMethod {
  // stuff shared by everyone
}

- (IBAction)someMethodWithItsid)sender {
  // stuff specific to IBAction
  [self someMethod];
}

如果你真的想要一个发件人,那么你可以这样做:

- (void)someMethodWithItsid)sender triggeredByUserBOOL)isUser {
}

- (IBAction)someMethodWithItsid)sender {
  [self someMethodWithIts:sender triggeredByUser:YES];
}

但一般来说,如果您希望 IBAction 不同于编程更改,则不要将编程更改连接到 IBAction。

关于iphone - 如何以编程方式判断 IBAction 是否已被代码或用户操作调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7155423/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://sqlite.in/) Powered by Discuz! X3.4