Вызов функции из другого класса - Obj C - PullRequest
4 голосов
/ 18 июня 2010

Я пытаюсь выяснить, как я могу вызвать функцию из другого моего класса. Я использую RootViewController для настройки одного из моих представлений, как, скажем, AnotherViewController

Так что в моем AnotherViewController я собираюсь добавить в .h файл

@class RootViewController

И в файле .m я собираюсь импортировать View

#import "RootViewController.h"

У меня есть функция с именем:

-(void)toggleView {
//do something }

И тогда в моем AnotherViewController у меня есть кнопка, назначенная как:

    -(void)buttonAction {
//}

В кнопке Action я хотел бы иметь возможность вызывать функцию toggleView в моем RootViewController.

Может кто-нибудь уточнить, как я это делаю.

Я пытался добавить это моя кнопка. Действие:

RootViewController * returnRootObject = [[RootViewController alloc] init];
    [returnRootObject toggleView];

Но я не думаю, что это правильно.

Ответы [ 2 ]

1 голос
/ 18 июня 2010

Я опробовал NSNotificationCentre - работает как шарм - спасибо за ваш ответ.Я не мог заставить его работать, но NS получил удар.

[[NSNotificationCenter defaultCenter] postNotificationName:@"switchView" object: nil];
1 голос
/ 18 июня 2010

Вы захотите создать переменную-делегат в своем AnotherViewController, а когда вы инициализируете ее из RootViewController, установите экземпляр RootViewController в качестве делегата AnotherViewController.

Для этого добавьте переменную экземпляра в AnotherViewController:"Идентификатор делегата".Затем добавьте два метода к AnotherViewController:

- (id)delegate {
     return delegate;
}

- (void)setDelegate:(id)newDelegate {
     delegate = newDelegate;
}

Наконец, в RootViewController, где инициализируется AnotherViewController, выполните

[anotherViewControllerInstance setDelegate:self];

Затем, когда вы хотите выполнить toggleView, выполните

[delegate toggleView];

В качестве альтернативы, вы можете сделать RootViewController одноэлементным, но метод делегата, безусловно, лучше использовать.Я также хочу отметить, что метод, о котором я только что рассказал, был основан на Objective-C 1.0.В Objective-C 2.0 появились некоторые новые свойства, но когда я изучал Obj-C, это меня сильно смутило.Я бы предпочел 1.0, прежде чем смотреть на свойства (таким образом, вы поймете, что они делают в первую очередь, они просто автоматически создают и получают и устанавливают).

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