IOS教程例外(ToDo示例)

时间:2014-01-27 06:50:54

标签: ios objective-c

我使用XCode 5.0.2跟踪了这个IOS Tutorial并且遇到了障碍:(

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

这是在我的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;
    }

}

完成后,我接到一个调用以下方法的方法,该方法假设将Item添加到ToDoListViewController中的Mutable数组中:

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

我注意到的是,如果我没有在文本字段中输入任何内容,只需单击“从列表添加”,然后单击“取消”或“完成”,则没有例外,视图从“添加待办事项”切换回“列表视图”。但是如果我在textField中键入任何内容并选择cancel或done,则抛出异常。

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'

一些指导意见将受到赞赏,所以我可以让这个工作。谢谢!

修改

经过几个小时的寻找并试图了解异常发生的原因后,我终于找到了原因。

我去了故事板并右键单击了文本字段。我发现其中一个发送事件已链接到一个方法(编辑结束是特定的)。不知道这个链接是如何制作的,但我删除了链接。我看到的唯一链接是在Referencing Outlets下,它指向AddToDoItemViewController.m中的textField。一旦我再次尝试,它就会工作。感谢所有提出建议的人。

2 个答案:

答案 0 :(得分:0)

摘要:将UIObject与您的控制器相关联是一个问题。

也许我迟到了,但这会对其他人有所帮助,因为我花了2个小时才意识到自己是初学者。

我将textField(输入)拖动到控制器以创建引用。

我犯了一个错误,因为我将引用拖到了实现区域而不是内部接口。

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

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

答案 1 :(得分:-1)

您忘记在xib中连接文本字段

Please follow up the below specified section in this link

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