iPhone setDelegate到以前分配的对象
我正试图建立协议和授权 我有一个问题,我希望将委托设置为以前分配的对象 我正在分配的对象需要委托给协议。这是怎么做到的 这是我的密码 //SendSMS.hiPhone setDelegate到以前分配的对象,iphone,objective-c,ios,cocoa-touch,ios4,Iphone,Objective C,Ios,Cocoa Touch,Ios4,我正试图建立协议和授权 我有一个问题,我希望将委托设置为以前分配的对象 我正在分配的对象需要委托给协议。这是怎么做到的 这是我的密码 //SendSMS.h @protocol ModalViewDelegate - (void)didReceiveMessage:(NSString *)message; @end @interface SendSMS : UIViewController <UITextViewDelegate, UITextFieldDelegate> {
@protocol ModalViewDelegate
- (void)didReceiveMessage:(NSString *)message;
@end
@interface SendSMS : UIViewController <UITextViewDelegate, UITextFieldDelegate> {
MessageOptions *messageOptions;
LoginPage *loginPage;
IBOutlet UITextField *phonenumber;
IBOutlet UITextView *smsBody;
IBOutlet UIScrollView *scrollview;
}
-(IBAction)LoadMessageOptions;
@end
@protocol-ModalViewDelegate
-(void)didReceiveMessage:(NSString*)消息;
@结束
@界面发送SMS:UIViewController{
MessageOptions*MessageOptions;
登录页面*登录页面;
IBOutlet UITextField*电话号码;
IBUItextView*smsBody;
IBUIScrollView*滚动视图;
}
-(iAction)加载消息选项;
@结束
问题是当对象被推到堆栈上时。它的委托人不是它自己。但是在它之前的物体
有什么想法吗
更新
好的,我已成功将我的委托设置为
[self.navigationController.viewControllers objectAtIndex:0]
,这是rootviewcontroller。但我有3个编译器警告,说明在协议中找不到这些方法。他们是。。。。但它编译运行并工作。决不允许实例将委托设置为自身。关于代理的整个想法是,您不需要知道代理是谁。据我所知,您的架构有三个层次
View1
是根控制器,它创建并推送李>
View2
做一些事情,然后创建和推送李>
View3
,希望将一些结果发送给相关人员View3
声明代理协议View3Delegate
View1
符合View3Delegate
View1
创建并按下View2
时,也将其传递给self
以保持View2
创建并按下View3
时,也设置在步骤3中传递的委托View3
想要发送其结果时,给学员打电话并表示高兴View2
需要处理一些东西,只是为了使View1
和View3
工作,而与它的实际职责无关
View3
声明一个名为View3ResponseNotification
的通知View1
观察名称的通知View3ResponseNotification
View1
创建并推送View2
,无需担心View2
轻松创建和推送View3
View3
想要发送其结果时,它会发布View3ResponseNotification
通知在创建委托的类中,可以将委托指定为实现协议的对象。检查我是否执行了,但它将委托设置为self。我无法委托给self,因为我有3个视图,希望视图3将数据传递给视图1。如果我可以跳过self,那么两次通过self将是毫无意义的,这就是我所做的,但得到了方法设置在堆栈之外的控制器。如果您有对view1或其控制器的引用,那么在创建view3时,将委托分配给该引用。我将给您打勾。这是我的想法,但我觉得有点冗长。因此,当视图2推送视图3时。它将DELEGATE设置为堆栈中索引为0的viewcontroller。它工作得非常好。我在上面遇到的问题是另一个xcode问题,简单的重新启动会停止编译器警告。