iOS教程异常(todo示例)



我使用Xcode 5.0.2遵循本iOS教程,并进入了路障:(

我已经在将项目添加到待办事项列表中实现了部分,这就是问题开始的地方。

这在我的addtodoitemviewController中,当我选择完成时发生:

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if(sender != self.doneButton)
    {
        return;
    }
    if(self.textField.text.length > 0)
    {
        self.todoItem = [[ToDoItem alloc] init];
        self.todoItem.itemName = self.textField.text;
        self.todoItem.completed = NO;
    }

}

完成此操作后,我会收到以下方法的调用,该方法应该将项目添加到我的TodolistViewController中的可变数组:

- (IBAction) unwindToList:(UIStoryboardSegue *)segue
{
    AddToDoItemViewController *source = [segue sourceViewController];
    ToDoItem *item = source.todoItem;
    if(item != nil)
    {
        [self.toDoItems addObject:item];
        [self.tableView reloadData];
    }
}

我注意到的是,如果我不在文本字段中输入任何内容,只需单击"添加"添加,然后单击"取消"或"完成",没有例外,并且视图从add do do do do to do to to to to to List View to List View。但是,如果我在Textfield中输入任何内容并选择"取消"或"完成",并且会抛出异常。

2014-01-26 22:28:15.301 ToDoList[2537:a0b] -[AddToDoItemViewController textField:]: unrecognized selector sent to instance 0x89c4b60
2014-01-26 22:28:15.310 ToDoList[2537:a0b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[AddToDoItemViewController textField:]: unrecognized selector sent to instance 0x89c4b60'

一些指导将不胜感激,因此我可以实现此功能。谢谢!

编辑:

经过数小时的寻找并试图理解为什么发生例外,我终于找到了原因。

我去了情节板,然后右键单击文本字段。我发现其中一个发送事件链接到方法(编辑确实结束是特定的)。不知道该链接是如何建立的,但是我删除了链接。我看到的唯一链接是在引用插座下指向AddTodoItemviewController.m中的Textfield。一旦我再次尝试,它就起作用了。感谢所有提出建议的人。

摘要:这是一个与控制器链接您的UIObject的问题。

也许我迟到了,但这对其他任何人都会有所帮助,因为这花了我2个小时才能意识到在这里成为初学者。

我将Textfield(输入)拖到控制器上以创建参考。

我犯了一个错误,因为我拖动了对实现区的引用,而不是对内部接口进行。

当我意识到这一点时,我删除了在控制器中生成的代码,,但我没有从对象中删除参考!!

要完全删除参考,您应该使用辅助鼠标按钮选择对象,然后将无用的参考(插座)删除到您的控制器中。

您已经忘记了连接xib

中的textfield

请在此链接中跟进以下指定部分

将文本字段连接到视图控制器

最新更新