【问题标题】:Objective-C get item from senderObjective-C 从发件人那里获取项目
【发布时间】:2016-01-15 03:54:36
【问题描述】:

我这里有这个方法:

- (IBAction)checkBoxTapped:(id)sender forEvent:(UIEvent*)event
{

    NSLog(@"%@", sender);
}

这是发件人返回的内容...

我的问题是如何获得 _checked 的值

复选框是一个类

请帮忙

【问题讨论】:

标签: objective-c


【解决方案1】:

没有看到接口,我们只能猜测该属性的 getter 方法是什么。因为它是BOOL,并且按照惯例,它可能被称为isChecked,因为它可能声明为:

 @property (readonly, getter=isChecked) BOOL checked;

因此,只需访问isChecked 方法(NSAssert() 完全是可选的):

NSAssert([sender isKindOfClass:[Checkbox class]], @"Expected a Checkbox instance");
Checkbox *checkbox = (Checkbox *)sender;
if (checkbox.isChecked) {
    // Do thing
}

【讨论】:

  • 这给了我一个错误...没有可见的@interface for 'Checkbox' 声明选择器'checked'
  • @user979331 Checkbox 声明在哪里(请编辑您的问题)?
  • 尝试isChecked 而不是checked
  • @rmaddy 很有可能,但是Checkbox 不是自定义类,我不知道它的接口。
  • @rmaddy 话虽如此,我已经编辑了我的答案以使用isChecked,因为这是最有可能的。
【解决方案2】:

您可以在这样的方法签名中将 id 替换为 Checkbox 类:

- (IBAction)checkBoxTapped:(Checkbox *)sender forEvent:(UIEvent*)event {
    NSLog(@"%@", sender.checked ? @"Checked" : @"Not checked");
}

您可能不会将此方法连接到另一个不是复选框的控件。

您还需要将checked 属性移动到Checkbox 类的头文件(公共接口)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-24
    • 2019-03-06
    • 2023-04-01
    • 1970-01-01
    相关资源
    最近更新 更多