2010-12-23 70 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]; 
相关问题