【问题标题】:Objective-C calling upon a IBAction without having to change the sender to nilObjective-C 调用 IBAction 而无需将发送者更改为 nil
【发布时间】:2023-04-09 10:40:01
【问题描述】:

我有一个程序,我想在 IBAction 中调用另一个 IBAction。但是,我使用它的方式是 [self buttonPress:nil];它调用了 IBAction 按钮,就好像它是一个函数一样,但问题是我调用发件人实例的 IBAction 变成了 nil,所以如果在使用发件人时调用的 IBAction 中的任何内容,它根本不会做任何事情。有没有办法在不更改发送方实例的情况下调用 IBAction?

【问题讨论】:

  • 只需使用第一个IBActionsender 调用第二个操作!
  • 您是否在buttonPress 函数中使用了sender 参数?如果不是,那么只需在方法实现中从中删除参数。它不是必需的。不过,您必须再次连接 IBAction。
  • 我在两个 IBAction 中都使用了两个发件人。当我调用其中一个或另一个时,我希望发件人能够像有人实际触摸它一样工作。我什至尝试过 [self button1Press:self] 因为我认为它会将自身的实例返回给自身,但是一旦我触摸按钮,编译器就会出错。我很感激fogmeister的帮助,我应该在我的描述中详细说明我想使用发件人将发件人的实例返回给自己或完全不同的调用方法。总之我的坏
  • @luk2302 有完整的答案(并且可能应该将其作为答案发布)。只需将sender 从一个 IBAction 传递到下一个。

标签: ios objective-c ibaction


【解决方案1】:

一个潜在的解决方法“可能”是让您的@IBAction 方法充当不同方法的包装器。这样,当您想调用另一个 @IBAction 时,您实际上是在调用它包装的方法。

@IBACTION Function1 {
  // Calls method:
  subMethod1()
}


@IBACTION Function2 {
  // Calls method:
  subMethod2()
}

@IBACTION Function3 {
  // Calls method:
  subMethod1()
  subMethod2()
}

【讨论】:

  • 非常感谢您,我将尝试这样做,而不是处理发件人问题。谢谢大佬!
猜你喜欢
  • 2023-03-14
  • 2010-09-14
  • 1970-01-01
  • 2012-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多