Вызов функции в первом представлении из другого viewcontroller - PullRequest
0 голосов
/ 24 июня 2010

Я надеюсь, что вам удастся хотя бы немного разъяснить мне, как и что делать, я уверен, что я не прав, поэтому мне действительно нужно мнение эксперта. У меня есть два viewcontroller вместе с кончиками, что я хочу, чтобы вызвать функцию, которая находится в первом классе из другого ViewController, проблема в том, что другой viewcontroller удается вызвать эту функцию, но я вижу только то, что это сделано, NSlog, который выводит консоль (которую я поставил в эту позицию, чтобы знать, что функция вызывается)

Пример: FirstViewController.m

    -(void)drawingFunction:(NSString*)inputText{
NSLog("Feature was launched");
/* showing stuff in FirstView.xib */
}

SecondViewController.m

-(void)turnOnFunction:(id)sender{
FirstViewController *stuff= [[PrviViewController alloc] init];
[stuff drawingFunction:@"ShowAll"];
}

В основном, когда я вызываю эту функцию в PrviViewController.m, что означает отсутствие ссылки на внешнюю сторону, например,

[self drawingFunction:@"ShowAll"];

все хорошо отображается, но когда я пытаюсь вызвать эту функцию из SecondViewController.m, все, что я вижу, это просто " функция была запущена " на консоли

Я действительно не знаю, что делать ...

Ответы [ 2 ]

0 голосов
/ 24 июня 2010

Вы путаете экземпляры с классами. Вы не отправляете сообщения (функции вызова) классам, вы отправляете их экземплярам.

В этом случае у вас есть два совершенно разных экземпляра FirstViewController. Первый создается путем загрузки пера, а второй создается в -[SecondController turnOnFunction:]. Сообщение drawingFunction: отправляется второму экземпляру, когда вы хотите, чтобы оно было отправлено первому.

Вам необходимо связать экземпляр пера FirstViewController с экземпляром SecondController. Вы можете сделать это с помощью розетки в конструкторе интерфейсов или назначить ее при создании дисплея SecondController.

0 голосов
/ 24 июня 2010

если я вас правильно понял, FirstViewController находится на вершине иерархии контроллера представления (либо внутри контроллера навигации, либо представлен модально)? Таким образом, если это так, то просто создание экземпляра SecondViewController и вызов функции, которая должна изменить пользовательский интерфейс в представлении, которое соответствует SecondViewController, ничего не сделает.

Вы должны представить SecondViewController и его представление с помощью presentModalViewController: animated: , например. После этого будет отображено представление SecondViewController, и вы сможете вносить любые изменения в это представление. Также вызов метода DrawingFunction: будет действовать так, как вы ожидаете.

Ура, Andreas

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...