在方法中返回自定义的UIButton?

时间:2011-09-24 09:05:25

标签: iphone objective-c ios uibutton

我有一个方法,它接受一个UIButton,修改它的属性并返回一个UIButton。但是,它似乎从未被初始化。我确定我在这里对内存管理做错了,但是不知道如何修复它。没有发生运行时错误。

它被称为......

newGameBtn = [self customButtonFromButton:newGameBtn
                                 withText:[NSString stringWithFormat:@"NEW GAME"]
                             withFontSize:22
                          withBorderColor:[UIColor orangeColor]
                                 isSilent:YES];
[dashboardContainer addSubview:newGameBtn];

该方法定义如下......

- (UIButton*) customButtonFromButton:(UIButton*)button withText:(NSString*)text withFontSize:(int)fontSize withBorderColor:(UIColor*)borderColor isSilent:(BOOL)isSilent {
    button = [[[UIButton alloc] init] autorelease];

    // Set properties from parameters
    // Other conditional custom stuff here

    return button;
}

注意:newGameBtn的类型为UIButton *并初始化为: newGameBtn = [[UIButton buttonWithType:UIButtonTypeCustom] retain];

另一种选择可能是UIButton的子类,但我想我会尝试解决这个问题,因为我已经沿着这条道路前进了。

2 个答案:

答案 0 :(得分:2)

创建按钮时,您应该使用+[UIButton buttonWithType:]来获得正确初始化的按钮。

默认的-[NSObject init]方法未正确初始化大多数类。因此,请查看类引用或超类引用,以获取可用的初始化方法。

在这种情况下,您还应设置frame

答案 1 :(得分:1)

你不用你的方法修改这个按钮,你用alloc-init创建一个全新的按钮!

如果您想更改第一个参数中的按钮,只需删除方法的第一行