2010-06-24 2 views
0

Надеюсь, что вам удастся хотя бы немного разъяснить мне, как и что делать, я уверен, что я ошибаюсь, поэтому мне действительно нужно мнение экспертов. У меня есть два диспетчера представлений вместе с наконечниками, которые я хочу, - это вызов функции, которая находится в первом классе из другого 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 все, что я вижу, это просто «функция была запущена» на консоли

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

ответ

0

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

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

Приветствия, Andreas

0

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

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

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