2010-09-10 66 views
0

如何在我的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 

} 

} 

希望這有助於理解(甚至更好)的問題...

+0

出了什麼問題只是發送消息的正常方式[someObj中someMessage]? – 2010-09-10 10:57:10

+0

我必須確定該方法已經完成其執行 – 2010-09-10 12:31:29

+0

我編輯了這個問題......希望它更清楚.. – 2010-09-10 12:55:53

回答

0

你需要使用委派。製作1個2級的委託讓2級將消息發送到1級

編輯變化:你想Class2中爲1級的代表這意味着1級會告訴類2,無堅不摧執行方法1在結腸之後。這可以是任何對象。在這個例子中,我使用了一個字符串。 Process method1與通常一樣,但請記住應該使用xmlFile變量而不是硬編碼對象,即使用xmlFile而不是@「file1.xml」。

EDITED例子:

類1 .H:在您的m

#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 

合成委託然後調用[delegate method1:@"file1"]

類2·H:

#import "class1.h" 

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

- (void)method1:(NSString *)xmlFile;
+0

Thanks.But如果每次必須重新調用傳遞給method1的參數,我是否需要將每個調用插入到doMethod1方法中? – 2010-09-10 13:41:37

+0

我已經重新編輯了答案 – 2010-09-10 14:22:41

+0

是file1 file2 etc對象還是參數?即你的函數調用method1:@「name」file1:@「something」或file1傳遞給method1? – MishieMoo 2010-09-10 15:24:21