【问题标题】:Programmatically Creating Controls in Cocoa以编程方式在 Cocoa 中创建控件
【发布时间】:2010-09-25 21:10:36
【问题描述】:

根据Cocoa Programming for Mac OS X, 3rd Edition,第 245 页(第 17 章),您通常会在 Interface Builder 中创建视图。但是,可以在代码中创建它们,例如:

NSView *superview = [window contentView]; 
NSRect frame = NSMakeRect(10, 10, 200, 100); 
NSButton *button = [[NSButton alloc] initWithFrame:frame]; 
[button setTitle:@"Click me!"]; 
[superview addSubview:button]; 
[button release]; 

这一切都很好,但是我如何将所述控件的出口连接到代码中的操作? (在 .NET 中,这很容易;添加一个委托……我希望在 Cocoa/Obj-C 中也同样容易。)

【问题讨论】:

    标签: objective-c cocoa controls


    【解决方案1】:

    斯威夫特:

    button.target = self
    button.action = "myAction:"
    

    当然还要给 self 添加 myAction 函数:

    func myAction(sender: NSButton) {
        println("click!")
    }
    

    【讨论】:

      【解决方案2】:

      您可以使用简单的分配将它们连接起来。从上面继续您的代码:

      [button setTarget: self];
      [button setAction: @selector(myButtonWasHit:)];
      

      【讨论】:

      • 漂亮,谢谢!这实际上比在 .NET 中更容易。
      【解决方案3】:

      如果您想针对第一响应者而不是特定对象:

      [button setTarget:nil];
      [button setAction:@selector(myAction:)];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-11
        相关资源
        最近更新 更多