Objective-C вызывает метод из другого UIViewController, на что ссылается self? - PullRequest
0 голосов
/ 05 декабря 2011

У меня есть 2 UIViewControllers в UITabBar, и я хотел бы создать фасад для одного из моих UIViewControllers, и при попытке сделать это у меня возникают проблемы:

//within the 2nd view controller, that has not been displayed yet:
-(void)startApp
{
    locationManager.delegate = self;
    [locationManager startUpdatingLocation];

}

Я пытаюсь

//within the first view controller:

[delegate startApp]

Что означает «self» в приведенном выше примере? Если я установил точку останова, я вижу, что вызывается обратный вызов в контроллере второго представления, но он не дает того же эффекта, что и при Я вызываю его непосредственно из контроллера второго вида.

ViewDidLoad внутри 2-го контроллера представления не вызывается до тех пор, пока я не коснусь этого контроллера, но, тем не менее, даже если я сделаю это, а затем вызову метод startApp, результат все равно будет неожиданным.

Вполне возможно, что я сломал модель MVC с моей установкой, и мне придется извлечь куски кода и создать базовую модель, которую будут использовать оба контроллера, но я надеялся на быстрое и грязное решение.

Спасибо за любые разъяснения!

1 Ответ

2 голосов
/ 05 декабря 2011

startApp - это метод экземпляра «2nd View Controller», поэтому «self» относится к конкретному экземпляру «2nd View Controller», который получил это сообщение.

...