你可以硬编码IBActions和IBOutlets,而不是在Interface Builder中手动拖动吗?

dai*_*dai 8 cocoa-touch objective-c iboutlet ibaction

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

Mih*_*hta 16

是的,它是poosible ...

示例代码

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];
Run Code Online (Sandbox Code Playgroud)


Mar*_*rov 14

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

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

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