我正在做一些简单的事情,比如获取UIButton的当前标题
-(IBAction)buttonPressed:(id)sender{
NSString *someString = [sender currentTitle];
}
由于某些原因,Xcode会将sender
与self
混淆,因为完整选项只会重新调整属于“self”的方法。无论我做什么,我都会得到相同的
-(IBAction)buttonPressed:(id)sender{
UIButton *btn = (UIButton *)sender;
NSString *someString = [btn currentTitle];
}
Xcode在NSString
行崩溃,“无法识别的选择器发送到btn”。我可以从另一个项目复制工作代码,同样的事情发生。可能有什么不对?
解
重新开始使用XCode并且工作正常o.O
答案 0 :(得分:1)
我认为Xcode不会让sender
与self
混淆,发生的事情是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”。