我有NSObject类的这个对象。此对象显示在viewController管理的视图上。如何从对象的类中获取对viewController的引用?
答案 0 :(得分: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];
答案 1 :(得分:0)
用户委托模式:
0。声明协议:
@protocol My_Object_Delegate;
1.给你的NSObject一个实例变量:
id <My_Object_Delegate> delegate;
2。将此委托设置为监督它的视图控制器:
myObject.delegate = myViewController;
3。当你的NSObject完成了。让它让代表执行某项任务:
[myObject.delegate performaCertainTask:self];