【问题标题】:Error when performing segue: -[UITextField length]: unrecognized selector sent to instance [closed]执行 segue 时出错:-[UITextField 长度]:无法识别的选择器发送到实例 [关闭]
【发布时间】:2014-02-24 01:04:02
【问题描述】:

我有一些代码可以在我的应用中切换到另一个屏幕:

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData*)data {
    NSString *dataString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    NSLog(@"Performing Segue...");
    // Open detail segue
    [self performSegueWithIdentifier:@"DetailViewSegue" sender:dataString];
}

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)json
{
    NSLog(@"Testing...");
    // If we are going to the success view, send the JSON data over as well!
    if ([segue.identifier isEqualToString:@"DetailViewSegue"]) {
        DetailViewController *DetailViewControllerSegue = [segue destinationViewController];
        NSDictionary *jsonSendetAsParamInPerformSegue = (NSDictionary*)json;
        DetailViewControllerSegue.jsonString = jsonSendetAsParamInPerformSegue;

    }
}

当我尝试执行 segue 时出现此错误:-[UITextField length]: unrecognized selector sent to instance 0x14589970

错误是什么意思?我该如何解决?

谢谢,

彼得

【问题讨论】:

  • 在下一个视图的 viewDidLoad 或 viewWillAppear 中是否有任何文本字段被访问/操作?
  • (“dataString”应该是什么?)
  • dataString 是从 Web 服务器接收的 JSON 字符串。我可以确认 dataString 很好,因为我在 NSLog 中调用它。 viewDidLoad 中正在处理一些文本字段,我现在会检查一下。
  • SO 有数百万个问题。为什么人们不能因为重复的问题而停止关闭它们,这是预期的!!!!!!!

标签: ios objective-c uiviewcontroller uitextfield uistoryboardsegue


【解决方案1】:

UITextField 没有名为 length 的选择器。您可能想要的是在文本字段的text 属性上调用length

[someTextField.text length]

(我实际上在发布的代码中没有看到与文本字段相关的任何内容......但这是给定错误消息的唯一解释)

【讨论】:

  • 我不明白为什么?我在视图控制器中有一些文本字段。此外,没有任何文本字段与 segue 被更改有关?
  • 只需查看您的代码并找出您在哪里调用length 选择器。这显然是问题所在。我也不明白为什么,因为您没有发布与您收到的错误消息相关的代码。
  • 我根本没有调用长度选择器。这就是我困惑的地方?
  • @PeterStuart - 查看异常堆栈!!
【解决方案2】:

出现此错误的原因是我的 Storyboard Segue Identifier 中有错字且不匹配:

@"DetailViewSegue"

在:

[self performSegueWithIdentifier:@"DetailViewSegue" sender:dataString];

我希望这对以后的其他人有所帮助

彼得

【讨论】:

  • 如果是这种情况,请接受您自己的答案以结束此问题。
  • @Marco 您需要至少等待 2 天才能接受自己的答案。愚蠢,我知道。
  • 我不知道。无论如何,感谢您发布自己问题的答案,并不是每个人都花时间这样做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-02
  • 2015-09-09
  • 2014-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多