2014-10-16 72 views
0

我刚开始学习iOS开发和Objective C和我下面的苹果教程(https://developer.apple.com/library/ios/referencelibrary/GettingStarted/RoadMapiOS/ThirdTutorial.html#//apple_ref/doc/uid/TP40011343-CH10-SW1的UITextField不真正工作

我有一个文本字段,增加了一个新的任务到一个数组。当我按“完成”任务被添加到阵列,它出现在tableview中 - 但后来我得到这个在调试:

[XYZViewController addTaskField:]:无法识别的选择发送到实例0x7fb13348c8c0 2014- 10-16 18:00:36.120 Tutorial123 [7880:1837804] ***终止应用程序由于未捕获的异常 'NSInvalidArgumentException',原因: ' - [XYZViewController addTaskField:]:无法识别的选择发送到实例0x7fb13348c8c0'

以下是我在该文件中处理文本字段的代码:

#import "XYZViewController.h" 
#import "ToDoItem.h" 

@interface XYZViewController() 

    @property (weak, nonatomic) IBOutlet UITextField *addTaskField; 
    @property (weak, nonatomic) IBOutlet UIBarButtonItem *doneButton; 


@end 

@implementation XYZViewController 


- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view from its nib. 
} 

- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 


- (IBAction)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 

if(sender != self.doneButton) return; 

if(self.addTaskField.text.length > 0){ 
    self.todoItem = [[ToDoItem alloc] init]; 
    self.todoItem.itemName = self.addTaskField.text; 
    self.todoItem.completed = NO; 
    } 
} 


@end 
+1

哪行代码导致错误?如果您不知道,请参阅http://raywenderlich.com/10209/my-app-crashed-now-what-part-1 – rmaddy 2014-10-16 22:07:11

+0

您是否已连接将您的IBOutlet称为addTaskField连接到故事板中的UITextField?我认为是因为addTaskField没有连接到故事板内的任何文本字段,它是null,并且self.addTaskField.text为null,所以要求self.addTaskField.text的长度会引发异常 – CjCoax 2014-10-16 22:24:55

+0

我确信它是因为在发生错误之前,我看到我输入的文本填充在表中,但是在错误崩溃之后第二秒。因此,似乎所有的东西都被调用并且数组被更新了,但最终发生的事情会使所有的东西崩溃。 – 2014-10-16 22:57:38

回答

0

当您连线故事板中的addTaskField按钮时,是否先创建一个动作,然后删除代码中的方法并创建一个插座?如果这是发生了什么,你必须回到故事板点击按钮和连接检查器,并看到里面没有addTaskField:有线。见下图。我添加了testAction:action。您必须按下View Controller testAction旁边的小x:删除它。让我知道如果这是发生了什么事。

enter image description here