我使用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。一旦我再次尝试,它就会工作。感谢所有提出建议的人。
答案 0 :(得分:0)
摘要:将UIObject与您的控制器相关联是一个问题。
也许我迟到了,但这会对其他人有所帮助,因为我花了2个小时才意识到自己是初学者。
我将textField(输入)拖动到控制器以创建引用。
我犯了一个错误,因为我将引用拖到了实现区域而不是内部接口。
当我意识到这一点时,我删除了控制器中生成的代码,但我没有删除对象的引用!!!
要完全删除引用,您应该使用辅助鼠标按钮选择对象,并将无用的引用(插座)移除到控制器。
答案 1 :(得分:-1)