【问题标题】:How to set delegate to an class that interface builder creates?如何将委托设置为接口构建器创建的类?
【发布时间】:2011-07-31 22:26:58
【问题描述】:

我正在 Xcode 中创建一个包含两个 nib 文件的程序。每个都包含一个单独的 NSWindow。第一个是来自 MainMenu.xib 的启动。当我单击其中的一个按钮时,我使用它来加载我的第二个视图(来自应用程序委托):

 myControl = [[NSWindowController alloc] initWithWindowNibName:@"ServerWindow"];
[myControl showWindow:self];

第二个 XIB (ServerWindow.xib) 加载没有问题,它有一个 ServerWindow.h 和 ServerWindow.m 连接到它(拖入一个 NSObject 并将其指向 IB 中的此类。

然后我继续在 ServerWindow 中进行一些设置,当我关闭此窗口时,我想将这些设置委托给我的原始类(App 委托)。

问题是,虽然我没有创建我的类 (ServerWindow.h) 的实例,但 Interface Builder 在加载 XIB 时以某种神奇的 IB 方式创建了这些实例,但我无法将我的原始类设置为它的委托。

如何将消息传回原来的班级?

【问题讨论】:

    标签: objective-c xcode delegates interface-builder


    【解决方案1】:

    将一个对象拖到您的第二个 xib 中,然后在右侧/检查/属性面板中将该类设置为您的原始类。然后 ctr click - 从控制器对象拖到刚刚创建的对象,并将其设置为委托。

    【讨论】:

      【解决方案2】:

      我不太确定我是否正确理解了您,但您不能在awakeFromNib 甚至在Interface Builder 中将自己设置为代表吗?您还可以访问 WindowController 的 window 属性来获取服务器窗口。

      【讨论】:

      • 我将评论以下事实:不,您不能从界面构建器轻松地将文件所有者委托设置为自身。希望在 viewDidLoad 中你总是可以self.delegate = self;
      猜你喜欢
      • 2020-09-23
      • 1970-01-01
      • 2013-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多