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

8

是否可以在代码中硬编码 IBActionIBOutlet,而不是在Interface Builder中进行拖动连接?

2个回答

16

是的,这是可能的...

示例代码

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等等。 - natur3

13

IBAction和IBOutlet的概念及唯一目的是为了提供接口生成器(Interface Builder)连接xib文件和您的代码的手段。

如果您不想在代码中使用接口生成器,那么您不需要使用IBAction或IBOutlet,只有当您想从类中使用在xib中实例化的对象(如按钮,文本字段等)时,才需要它们。

话虽如此,mihirpmehta的答案是以编程方式向您的视图添加UI元素并为其添加动作的正确方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接