Как использовать метод с несколькими параметрами для создания пользовательских кнопок - PullRequest
0 голосов
/ 13 июня 2010

Я повторяю свои коды несколько раз для создания пользовательских кнопок, я пытаюсь создать метод и создать все необходимые мне кнопки, просто вызвав этот метод и используя два параметра, 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 голосов
/ 13 июня 2010

Не совсем уверен, что вопрос здесь?

Когда дизайн приложения вроде как выложен, я создаю класс 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;
}

Поскольку все это методы класса, мне не нужно создавать экземплярыкласс ISInterfaceElement, чтобы использовать их.

Я просто иду:

UILabel aHeadlineLabel = [ISInterfaceElement getLabel:Headline];

Вы можете создать что-то подобное для своих кнопок, все, что вам нужно сделать, это создать новую UIButton внутри вашего метода,установите название и действие и, наконец, верните myButton, как я делаю с ярлыками.

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...