如何使用具有多个参数的方法来创建自定义按钮

时间:2010-06-13 16:11:55

标签: iphone xcode parameters sdk methods

我正在重复我的代码几次以创建自定义按钮,我正在尝试创建一个方法并通过调用该方法并使用两个参数btnTitle和btnAction来创建我所需的所有按钮。

我的方法代码

-(void) addnewButton:(NSString *) btnTitle withAction:UIAction btnAction; {

  // Add a custom edit navigation button
 editButton = [[[UIBarButtonItem alloc]
   initWithTitle:NSLocalizedString((btnTitle), @"")
   style:UIBarButtonItemStyleBordered
   target:self
   action:@selector(btnAction)] autorelease];
 self.navigationItem.rightBarButtonItem = editButton;

}

现在我该如何调用此方法来创建按钮?

1 个答案:

答案 0 :(得分:0)

不太确定这里的问题是什么?

当应用程序的设计有点布局时,我已经构建了一个ISInterfaceElements类,它包含我在应用程序周围需要的东西。 (UIlabels,UIColors,UIButtons等)UIElements的实例化只是占用空间,使事情变得复杂,如果你需要更改在14个地方使用的按钮或颜色,那么将所有设置代码编写在不同的地方真的很糟糕地方。无论如何,我通常这样做:

//  ISInterfaceElement.h


#import <Foundation/Foundation.h>

typedef enum {

    DarkBackground, 
    LightBackground,


} ISColorType;

typedef enum {

    Headline, 
    Detail,


} ISLabelType;

@interface ISInterfaceElement : NSObject {

}

+ (UIColor*) getColor:(ISColorType) colorType;
+ (UILabel*) getLabel:(ISLabelType) labelType;

@end

使用精美的枚举使其易于记忆。

//  ISInterfaceElement.m

#import "ISInterfaceElement.h"


@implementation ISInterfaceElement

+ (UIColor*) getColor:(ISColorType) colorType {

    int value;

    switch (colorType) {

        case DarkBackground:
            value = 0x2d3c3f;
            break;          
        case LightBackground:
            value = 0x627376;
            break;
        default:
            value = 0x000000;
            break;
    }

    int r, g, b;
    b = value & 0x0000FF;
    g = ((value & 0x00FF00) >> 8);
    r = ((value & 0xFF0000) >> 16);

    return [UIColor colorWithRed:r/255.0f green:g/255.0f blue:b/255.0f alpha:1.0f]; 


}

+ (UILabel*) getLabel:(ISLabelType) labelType {

    UILabel *label = [[[UILabel alloc] init] autorelease];
    [label setBackgroundColor:[UIColor clearColor]];    

    switch (labelType) {
        case Headline:
            [label setFont:[UIFont fontWithName:@"HelveticaNeue-Bold" size:14]];
            [label setTextColor:[UIColor whiteColor]];
            break;
        case Detail:
            [label setFont:[UIFont fontWithName:@"HelveticaNeue" size:14]];
            [label setTextColor:[UIColor whiteColor]];
            break;  
        default:
            break;
    }

    return label;
}

因为这些都是Class方法,所以我不需要实例化ISInterfaceElement类来使用它们。

我走了:

UILabel aHeadlineLabel = [ISInterfaceElement getLabel:Headline];

你可以为你的按钮构建类似的东西,你需要做的就是在你的方法中建立一个新的UIButton,设置标题和动作,最后返回myButton,就像我对标签一样。

希望有所帮助