发件人currentTitle在Xcode中无法识别

时间:2012-02-17 21:32:09

标签: iphone ios xcode

我正在做一些简单的事情,比如获取UIButton的当前标题

-(IBAction)buttonPressed:(id)sender{
    NSString *someString = [sender currentTitle];
}

由于某些原因,Xcode会将senderself混淆,因为完整选项只会重新调整属于“self”的方法。无论我做什么,我都会得到相同的

-(IBAction)buttonPressed:(id)sender{
    UIButton *btn = (UIButton *)sender;
    NSString *someString = [btn currentTitle];
}

Xcode在NSString行崩溃,“无法识别的选择器发送到btn”。我可以从另一个项目复制工作代码,同样的事情发生。可能有什么不对?

重新开始使用XCode并且工作正常o.O

5 个答案:

答案 0 :(得分:1)

我认为Xcode不会让senderself混淆,发生的事情是Xcode对sender一无所知,因为它被声明为id,这意味着Xcode只知道它是一个对象。

您在Xcode中获得的建议可能只是每个对象的方法。

你必须确保sender符合你的期望,尝试这样做并检查它是否真的是一个按钮或其他东西:

-(IBAction)buttonPressed:(id)sender{
    NSLog(@"Sender: %@", sender);
}

答案 1 :(得分:0)

<强>解

重新开始使用XCode并且工作正常o.O

答案 2 :(得分:0)

“无法识别的选择器发送到btn”的可能原因是当您调用实际未写入的方法时。或者你可能被称为

[self buttonPressed];

而不是

[self buttonPressed:];

答案 3 :(得分:0)

你的问题是你打电话给'id'而不是按钮自己。将“id”替换为“UIButton”,如此...

-(IBAction)buttonPressed:(UIButton *)sender{
    NSString *someString = sender.currentTitle;
}

答案 4 :(得分:-2)

我认为问题是语法错误

 sender.currentTitle;

OR

btn.currentTitle;

currentTitle是一个属性,没有名为currentTitle的函数,因此你会收到错误“无法识别的选择器发送到btn”。