代码之家  ›  专栏  ›  技术社区  ›  CodeGuy

iPhone编程-如何以编程方式生成需要两个代理的视图?

  •  0
  • CodeGuy  · 技术社区  · 15 年前

    我对iPhone编程还不熟悉,所以任何关于如何拥有一个处理多个委托的界面视图的帮助(这样我就可以在视图中拥有多种类型的控件)都会非常有用!

    1 回复  |  直到 6 年前
        1
  •  1
  •   walkytalky    15 年前

    委托不需要是视图。事实上,在大多数情况下,它可能不应该。通常,您会使控制器对象成为委托,尽管这在很大程度上取决于您正在执行的操作。

    您需要的代理协议( MFMessageComposeViewControllerDelegate UITextFieldDelegate )是完全不同的,因此单个对象可以很容易地实现这两种方法,而不会产生任何混淆。但是,即使您对多个对象使用相同的委托类型,这些方法也会被传递一个指向调用对象的指针,这样您就可以在必要时根据具体情况来决定执行什么操作。

    @interface MyDelegate : NSObject <MFMessageComposeViewControllerDelegate, UITextFieldDelegate>
    {
        ...
    }
    

    ……虽然这是以正式要求协议为前提的,但我不认为这里是这样。在这种情况下,这样的协议列表是不必要的。

    否则,我可能不理解你的问题。。。


    编辑: 好吧,看起来你要找的是如何在运行时连接代理。这取决于特定的类别,但是 MFMessageComposeViewController 您可以这样做:

    MFMessageComposeViewController* composer = ...;
    id<MFMessageComposeViewControllerDelegate>* delegate = ...;
    composer.messageComposeDelegate = delegate;
    

    一般来说,如果一个对象对任何事情使用委托,它将有一个属性或方法允许您设置它,您可以在文档中找到。例如,在这种情况下: Properties for MFMessageComposeViewController .