У меня есть контроллер модального представления, который пытается установить флаг (свойство NSNumber) контроллера представления исходного кода, который вызвал его в методе метода подготовкиForSegue. Он не может построить с ошибкой «Нет известного метода экземпляра для селектора» setGoToEditNewNote: ». Вот код:Ошибка установки свойства NSNumber контроллера представления назначения в prepareForSegue
Source View Controller .h:
@property (strong, nonatomic) NSNumber *goToEditNewNote;
Source View Controller .m:
@synthesize goToEditNewNote;
...
- (void)viewDidLoad
{
[super viewDidLoad];
// clear the flag
goToEditNewNote = [[NSNumber alloc] initWithBool:FALSE];
...
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
if ([goToEditNewNote boolValue] == TRUE) {
goToEditNewNote = FALSE;
[self performSegueWithIdentifier: @"editNote" sender: self];
...
модального View Controller .h:
Модального View Controller .й :
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"done"])
{
[self done];
[[segue destinationViewController] setGoToEditNewNote:TRUE]; <<< get error here
}
}
Я подозреваю, что проблема может быть связана с тем, что goToEditNewNote не сохраняется при загрузке модального представления, но я не понимаю, почему нет. Аналогичным образом я установил другие свойства, такие как managedObjectContext, с успехом. Пожалуйста, будьте как можно более конкретными в своем ответе, поскольку я новичок в ARC. Спасибо - Том
А также вы устанавливаете значение BOOL в свойство NSNumber, вы должны получить предупреждение Compiler об этом, а не Runtime error, но возможно, что это соответствует заданию, описанному Mark –
. Вы правы. Передача BOOL в NSNumber приведет к ошибке сегментации. Я обновил свой код. OP, есть ли причина, по которой вы не просто используете «BOOL» для начала? –
@M и @D. Я сделал это, как было предложено, и ошибка исчезла, однако набор не вернулся к контроллеру исходного вида. Я регистрирую значение сразу после того, как он был установлен в segue, и сообщил, что goToEditNewNote = 1, как и ожидалось. Затем я зарегистрировал значение в методе viewWillAppear контроллера представления исходного кода. Он сообщил goToEditNewNote = 0; Марк, изначально я использовал BOOL, но перешел на NSNumber, пытаясь решить или понять больше о проблеме. Связана ли эта ссылка? http://www.ifans.com/forums/showthread.php?t=183427. Добавление установщика не помогло мне решить эту проблему. –