gpt4 book ai didi

iPhone setDelegate 到之前分配的对象

转载 作者:行者123 更新时间:2023-11-28 23:14:41 25 4
gpt4 key购买 nike

我正在尝试设置协议(protocol)和授权。

我有一个问题,我希望将委托(delegate)设置为以前分配的对象。

我正在分配的对象需要委托(delegate)给一个协议(protocol)。这是怎么做到的?

这是我的代码。

//发送短信.h

@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

问题是当对象被压入堆栈时。它的代表不是它自己的代表。但它之前的对象。

有什么想法吗?

更新!

好的,我已经设法将我的委托(delegate)设置为 [self.navigationController.viewControllers objectAtIndex:0],这是 rootviewcontroller。但是我有 3 个编译器警告,指出协议(protocol)中没有找到这些方法。它们是什么......但它编译运行和工作。

最佳答案

切勿让实例将委托(delegate)设置为自身。代表的整个想法是您不需要知道代表是谁。据我了解您的架构,它分为三个层次;

  1. View1 是根 Controller ,它创建和推送;
  2. View2 做一些事情然后创建和推送;
  3. View3 想要将一些结果发送给相关人员。

我看到了两种可能的解决方案。

解决方案 1 - 委托(delegate)

  1. View3 声明一个委托(delegate)协议(protocol) View3Delegate
  2. View1 符合 View3Delegate
  3. View1 创建并推送 View2 时,也会将其传递给 self 以保持。
  4. View2 创建并推送 View3 时,还会设置在步骤 3 中传递的委托(delegate)。
  5. View3 想要发送它的结果时,调用委托(delegate)并高兴。

解决方案 2 - 通知

对于您的情况,这可能是一个更优雅的解决方案,因为之前的解决方案有一个额外的步骤,其中 View2 需要处理一些东西,只是为了使 View1View3 工作,与其真正的职责无关。

  1. View3 声明一个名为 View3ResponseNotification 的通知。
  2. View1 观察名称为 View3ResponseNotification 的通知。
  3. View1 毫无顾虑地创建和推送 View2
  4. View2 毫无顾虑地创建和推送 View3
  5. View3 想要发送结果时,它会发布 View3ResponseNotification 通知。

关于iPhone setDelegate 到之前分配的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6956283/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com