【问题标题】:Use of undeclared identifier 'sender' in void function在 void 函数中使用未声明的标识符“发送者”
【发布时间】:2012-05-01 01:05:30
【问题描述】:

我正在对Storyboard 进行自定义Segue,并且我有一个包含此代码的按钮:

 [self performSegueWithIdentifier:@"line3" sender:sender];

点击按钮效果很好。我遇到的问题是此代码仅适用于按钮功能,而不适用于 void 功能。我尝试点击按钮,效果很好。当我将它粘贴到一个 void 函数中时,它会给我一个抱怨发件人的错误。我尝试将其更改为无效,但没有任何反应。你能给我一些关于解决这个问题的见解吗?我正在检查UserDefault,它与我正在寻找的内容相匹配,然后我想执行此代码:[self performSegueWithIdentifier:@"line3" sender:sender];

-(IBAction)LoginAttemp:(id)sender{
    [self performSegueWithIdentifier:@"line3" sender:sender];
}



-(void) LoginFailed{
    [self performSegueWithIdentifier:@"line3" sender:sender];
}

我得到的错误:

使用未声明的标识符“发件人”

有什么见解吗?

【问题讨论】:

  • 显示更多代码,一个按钮,IBAction和void是一样的,所以其他的肯定不一样...
  • 我添加了按钮和void函数的代码。

标签: ios objective-c segue


【解决方案1】:

改变

[self performSegueWithIdentifier:@"line3" sender:sender];

[self performSegueWithIdentifier:@"line3" sender:Nil];

发件人是:

要用于启动 segue 的对象。这个对象是 在实际转场期间可供参考。

【讨论】:

  • 是的,也可以,在这种情况下,发件人是为了提供信息。
  • 由于某种原因让它与 Nil 合作,即使在发布之前,self 也从未为我工作过。感谢您的帮助!
【解决方案2】:

void 不是问题。问题是sender 不是保留字。这是IBAction 的参数之一:

-(IBAction)LoginAttemp:(id)sender{

看到了吗?就在最后。这相当于 IBAction LoginAttemp(id sender) 的 Objective-C

如果没有发件人,可以传递nilself。最好使用self

-(void) LoginFailed{

    [self performSegueWithIdentifier:@"line3" sender:self];
}

【讨论】:

  • 你能告诉我为什么“self”比“nil”更受欢迎吗?
  • Apple 将发件人描述为:“您要用于启动 segue 的对象。此对象在实际 segue 期间可用于提供信息。” nil 没有明确禁止,但也没有明确允许。我的偏好是提供一些上下文,以防我需要知道“谁”调用了 segue。
猜你喜欢
  • 1970-01-01
  • 2013-08-19
  • 2013-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多