Отправить событие для вызова метода между двумя классами - PullRequest
0 голосов
/ 10 сентября 2010

Как я могу вызвать метод в классе только после проверки условия в другом методе другого класса в моем приложении для iPhone?

Есть идеи?

Спасибо, Андреа

изменить 3

//class1 

//Class1.m


@implementation Class1 {

 ....

    [class2  method1:@"file1.xml"];

    [class2  method1:@"file2.xml"];

    [class2  method1:@"file3.xml"];
} 
        ….

  @end

  //class2

#import "Class1.h"  


@implementation Class2{

-(void) method1(NSString *)file{

   [self method2];

 }


-(void) method2{

   //when finish that method I have to call the successive method [class2  method1:@"file2.xml"]; in class1

 }

}

надеюсь, это поможет понять (даже лучше) проблему ...

1 Ответ

0 голосов
/ 10 сентября 2010

Вам необходимо использовать делегирование. Создание делегата класса 1 позволяет классу 2 отправлять сообщения в класс 1.

Редактировать изменения: Вы хотите, чтобы class2 был делегатом класса 1. Это означает, что класс 1 сообщит классу 2, что метод method1 выполняется с любым последующим после двоеточия. Это может быть любой объект. В примере я использовал строку. Обрабатывайте method1 как обычно, но помните, что вместо жестко закодированного объекта должна использоваться переменная xmlFile, т. Е. Использовать xmlFile вместо @ "file1.xml".

РЕДАКТИРОВАНИЕ Пример:

класс 1 .ч:

#import <UIKit/UIKit.h>
..etc

//a protocol declaration must go before @interface
@protocol class1Delegate
-(void)method1:(NSString *)xmlFile;
@end


@interface class1 {
 id <class1Delegate> delegate;
}

@property (nonatomic, assign) id <class1Delegate> delegate;
@end

Синтезировать делегата в ваш .m

Тогда позвоните [delegate method1:@"file1"].

класс 2 .h:

#import "class1.h"

@interface class2 <class1Delegate> {
//put whatever here
}

- (void)method1:(NSString *)xmlFile;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...