Создать класс для повторно используемых UILabels - PullRequest
1 голос
/ 16 мая 2011

В моем приложении я постоянно создаю одну и ту же UILabel.Так что я думаю, что сейчас самое время создать для него класс и просто вызвать его?

Например, я многократно использую этот код, чтобы создать UILabel для моей UINavigationBar в представлениях, с единственнымРазница в том, что label.text, который я думаю, я могу передать в качестве параметра:

// - - - - - Add a Navigation Bar

UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
navBar.barStyle = UIBarStyleBlack; 
navBar.translucent = YES;

[self.view addSubview:navBar];
[navBar release];

// - - - - - Add a label to the navbar

UILabel *navLabel = [[UILabel alloc] initWithFrame:CGRectMake(20,8,280,30)];
navLabel.autoresizingMask = UIViewAutoresizingFlexibleWidth;
navLabel.text = @"Some Label String";
navLabel.backgroundColor = [UIColor clearColor];
navLabel.textColor = [UIColor whiteColor];
navLabel.font = [UIFont boldSystemFontOfSize:20];
navLabel.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
navLabel.textAlignment = UITextAlignmentCenter;
[navBar addSubview:navLabel];
[navLabel release];

Так что я думаю, что я должен быть в состоянии создать класс UILabelNavBar и просто создать UILabel, вызывая его следующим образом:это:

navBar addSubview:[UILabelNavBar createLabel:@"Some Label String"]];

За исключением того, что я не знаю, как создать класс.Любая помощь приветствуется.LQ

Ответы [ 4 ]

3 голосов
/ 16 мая 2011

Файл -> Новый файл ... -> Класс Objective C -> Подкласс UIView -> введите имя класса -> выберите папку -> измените UIView в только что созданных файлах .m и .h на UILabel

1 голос
/ 17 мая 2011

Благодаря подталкиванию от Адубра работают следующие:

// *** OftenUsedLabel.h ***

#import <UIKit/UIKit.h>

@interface OftenUsedLabel : UILabel 
{
    UILabel *oftenUsedLabel;
}

@property (nonatomic, retain) UILabel *oftenUsedLabel;

@end

// *** OftenUsedLabel.m ***

#import "OftenUsedLabel.h"

@implementation OftenUsedLabel

@synthesize oftenUsedLabel;

- (id)initWithFrame:(CGRect)frame {

    self = [super initWithFrame:frame];

    if (self) {

        CGRect rect;
        rect = CGRectMake(0.0,0.0,280.0,30.0);

        oftenUsedLabel = [[UILabel alloc] initWithFrame:rect];
        oftenUsedLabel.backgroundColor = [UIColor clearColor];
        oftenUsedLabel.textColor = [UIColor whiteColor];
        oftenUsedLabel.font = [UIFont boldSystemFontOfSize:20];
        oftenUsedLabel.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
        oftenUsedLabel.textAlignment = UITextAlignmentCenter;

        [self addSubview:oftenUsedLabel];
    }

    return self;    
}

- (void)dealloc {
    [oftenUsedLabel release];
    [super dealloc];
}


// *** SomeViewController.m ***

#import "OftenUsedLabel.h"

// CALL THE LABEL LIKE THIS:

    CGRect rect;
    rect = CGRectMake(0.0, 0.0, 320.0, 60.0);
    UILabel *myLabel = [[[OftenUsedLabel alloc] initWithFrame:rect] autorelease];
    myLabel.text = @"Some Text";
    [self.view addSubview:myLabel];
    [myLabel release];
0 голосов
/ 16 мая 2011

На каком языке это создается? (Для меня это выглядит как XAML / WPF ... или FLEX?)

Вообще говоря, синтаксис будет следующим:

Class NavBar()
{

   function navBar()
   {
      //new navbar object
      UINavigationBar *navBar = [[UINavigationBar alloc] 
      initWithFrame:CGRectMake(0, 0,          320, 44)];
      navBar.barStyle = UIBarStyleBlack; 
      navBar.translucent = YES;

      [self.view addSubview:navBar];
      [navBar release];

      //call the navbar function and create the label for the new navbar
      navBarLabel()

   }

   function navBarLabel()
   {

      UILabel *navLabel = [[UILabel alloc] initWithFrame:CGRectMake(20,8,280,30)];
      navLabel.autoresizingMask = UIViewAutoresizingFlexibleWidth;
      navLabel.text = @"Some Label";
      navLabel.backgroundColor = [UIColor clearColor];
      navLabel.textColor = [UIColor whiteColor];
      navLabel.font = [UIFont boldSystemFontOfSize:20];
      navLabel.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.5];
      navLabel.textAlignment = UITextAlignmentCenter;
      [navBar addSubview:navLabel];
      [navLabel release];         

   }

}

Но зависит от языка программирования и, возможно, от платформы. :) Также, если вы создадите его как внешний класс и сделаете его общедоступным, вы сможете вызывать эти функции всякий раз, когда они вам нужны.

Так, например, navBar может быть создан без вызова метки navBar ... тогда пользователь может решить ввести что-то для этой новой метки или нет. Если они ничего не вводят, программа переходит к следующему методу или пользователь создает новую метку.

Это будет динамичная и более интерактивная система. :)

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

0 голосов
/ 16 мая 2011

Вам не нужен класс здесь.Просто определите функцию как addLabel(UINavigationBar *navBar, ... text) и используйте ее.

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