0

问题可能看起来很愚蠢,只是在目标 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 中通过引用传递,我该如何处理这种情况?

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

注意:创建按钮是一个通用代码,我一直在使用它来在运行时创建按钮,这取决于 req。

谢谢

4

3 回答 3

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];
    }
于 2013-07-10T07:23:23.303 回答
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];
}

工作正常

于 2013-07-10T07:21:13.063 回答
0

试试这个....

- (void) create_button : (UIButton*) button
{
    // Create button
    UIButton *tmpButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    tmpButton = button;
    [self.add_scroll_view addSubview:tmpButton];
}
于 2013-07-10T07:32:46.213 回答