2014-10-16 6 views
0

Я только начинаю изучать развитие IOS и Objective C и я следую учебник Apple (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

+0

Подключены ли вы к вашему IBOutlet, называемому addTaskField, в UITextField в вашем раскадровке? Я думаю, потому что addTaskField не подключен ни к одному текстовому полю внутри раскадровки, он равен null, а self.addTaskField.text имеет значение null, поэтому запрос длины self.addTaskField.text будет вызывать исключение – CjCoax

+0

Я уверен, что это потому что перед тем, как произошла ошибка, я вижу введенный текст, заполненный в таблице, но через секунду после сбоя приложения. Поэтому кажется, что все вызывается и массив обновляется, но в конце происходит что-то, что приводит к сбою всего. –

ответ

0

Когда вы подключали кнопку AddTaskField из раскадровки, вы сначала создали действие, затем удалили метод в коде и создали выход? Если это произойдет, вам нужно вернуться к раскадровке, щелкнув по кнопке и инспектору подключений, и убедитесь, что внутри него нет встроенного addTaskField: подключен. См. Изображение ниже. Я добавил testAction: действие. Вы должны нажать маленький x рядом с View Controller testAction: удалить его. Дайте мне знать, если это произошло.

enter image description here

Смежные вопросы