如何将UIButton传递给函数并在那里创建......?

时间:2013-07-10 07:11:03

标签: iphone ios objective-c cocoa-touch

问题可能看起来很愚蠢,只是在目标C的一些基础知识中遇到问题。我知道目标C只支持按值传递但是我的要求需要传递地址。我有一个UIButton成员变量(iVar),我将它们传递给一个函数,并尝试使用下面的参数在函数内部分配init ...

功能调用:

[self create_button : ivar_btn];

定义:

- (void) create_button : (UIButton*) button
{
    // Create button
    button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [button setTitle:@"00/00/0000" forState:UIControlStateNormal];
    [self.add_scroll_view addSubview:button];
}

因此,如果没有在目标C中通过引用,我该如何处理这种情况?

如果我理解错误,请纠正我。

注意:“创建”按钮是一个常用代码,我一直在使用此按钮在运行时根据需要创建按钮。

感谢名单

3 个答案:

答案 0 :(得分:2)

这是无用的实现,我还没有尝试过。

UIButton *ivar_btn = nil;   
    [self create_button : &ivar_btn];
- (void) create_button : (UIButton**) button
    {
        // Create button
        *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        [*button setTitle:@"00/00/0000" forState:UIControlStateNormal];
        [self.add_scroll_view addSubview:*button];
    }

答案 1 :(得分:0)

我尝试了你的代码,它对我来说很好。只是你错过了一件事。设置框架。

以下是我修改代码的方法,对我来说很好。希望它也适合你。

UIButton *btn = [[UIButton alloc] init];
[self create_button:btn];

和功能/方法:

- (void) create_button : (UIButton*) button
{
    // Create button
    button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    [button setTitle:@"00/00/0000" forState:UIControlStateNormal];
    [button setFrame:CGRectMake(0, 0, 100,100)];
    [self.view addSubview:button];
}

工作正常

答案 2 :(得分:0)

试试这个......

- (void) create_button : (UIButton*) button
{
    // Create button
    UIButton *tmpButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    tmpButton = button;
    [self.add_scroll_view addSubview:tmpButton];
}