【问题标题】:Can you hard code IBActions and IBOutlets, rather than drag them manually in Interface Builder?您可以硬编码 IBActions 和 IBOutlets,而不是在 Interface Builder 中手动拖动它们吗?
【发布时间】:2010-03-30 10:00:34
【问题描述】:

是否可以在代码中硬编码IBActions 和IBOutlets,而不是在 Interface Builder 中拖动连接它们?

【问题讨论】:

    标签: objective-c cocoa-touch ibaction iboutlet


    【解决方案1】:

    是的,它是可能的......

    示例代码

    UIButton *btnDetail = [UIButton buttonWithType:UIButtonTypeRoundedRect] ;
    
            [btnDetail setFrame:CGRectMake(250.0f, 15.0f, 65.0f, 20.0f)] ;
            //btnDetail.backgroundColor = [UIColor grayColor];
            [btnDetail setTitle:@"Detail" forState:UIControlStateNormal];
            [btnDetail setTitleColor: [UIColor redColor] forState: UIControlStateNormal];
            [btnDetail.titleLabel setFont:[UIFont fontWithName:@"Verdana" size:12]];
            [btnDetail setBackgroundColor:[UIColor clearColor]];
            [btnDetail sizeThatFits:btnDetail.frame.size];
            [self.view addSubview:btnDetail];
    //IBAction
            [btnDetail addTarget:self 
                       action:@selector(ShowSavingAccountDetail:)
             forControlEvents:UIControlEventTouchUpInside];
    
            [btnDetail setImage:[UIImage imageNamed:@"btn-detail.png"] forState:UIControlStateNormal];
    

    【讨论】:

    • 我不知道这是否重要(因为我是新手),但我不得不将消息后面的 IBAction 部分移动到视图中以添加按钮。然后确认它正在使用确认它被按下的 NSLog 消息。我绑定了一个 sender.selected == YES 然后打印 else 依此类推。
    【解决方案2】:

    IBAction 和 IBOutlet 的概念和唯一目的是为 Interface Builder 提供将 xib 与您的代码连接起来的方法。

    如果您不想在代码中使用 Interface Builder,则不需要 IBAction 或 IBOutlet,您只需要它们来使用在您的 xib 中从您的类中实例化的对象(按钮、文本字段等) .

    话虽如此,mihirpmehta 的答案是以编程方式将 UI 元素添加到视图并向它们添加操作的正确方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-14
      • 1970-01-01
      • 2018-09-02
      • 1970-01-01
      • 2021-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多