2010-12-23 30 views

回答

2

如你所知,沒有「myViewController」屬性。讓任何對象訪問其他對象的最簡單方法是通過委託關係。

定義一個協議爲代表 - 通常是希望的對象的訪問,這將是代表模塊中,即,視圖控制器

@protocol MyViewControllerDelegate 

- (void)someActionTheViewControllerWillDo; 

#end 

廣告類中的代表支持實現它

@interface MyViewController : UIViewController <MyViewControllerDelegate> 
... 
@end 

實施你定義爲在視圖控制器的協議的一部分的功能:

@implementation MyViewController 

etc. etc. 

#pragma mark - 
#pragma mark MyViewControllerDelegateMethods 

- (void)someActionTheViewControllerWillDo 
{ 
    NSLog(@"I'm being called from an object that has me as a delegate"); 
} 

etc. etc. 

@end 

使一個變量在調用對象來存儲委託對象

@interface MyObject : NSObject 
{ 

etc. etc. 

    id<MyViewControllerDelegate> myDelegate; 

etc. etc. 
} 

初始化該對象

MyObject* myObject = [[MyObject alloc] initWithblahblah... 
myObject.myDelegate = self 
/* assuming myObject is being created in the view controller... */ 

在myObject的 - 使用定義的協議來訪問方法在委託對象!

[myDelegate someActionTheViewControllerWillDo]; 
+0

Thanksssssssssssssssssssssssss !!!!!!!!!!! – Roger 2010-12-23 03:44:47

0

用戶委託模式:

0。聲明一個協議:

@protocol My_Object_Delegate; 

確定公司運作的NSObject的一個實例變量:

id <My_Object_Delegate> delegate; 

2。設置此代表監督它的視圖控制器:

myObject.delegate = myViewController; 

3。當你的NSObject完成。讓它委託其執行某些任務:

[myObject.delegate performaCertainTask:self]; 
相關問題