Изменить текст в UILabel с данными NSMutablearray - PullRequest
1 голос
/ 22 сентября 2011

Я пытаюсь изменить текст UILabel с текстом из массива при нажатии кнопки, но он ничего не делает.

@interface Test01AppDelegate : NSObject <UIApplicationDelegate> {
UILabel *helloLabel;
UIButton *hellobutton;
NSMutableArray *madWords;
}

@property (nonatomic, retain) IBOutlet UIWindow *window; 
@property (nonatomic, retain) IBOutlet UIButton *hellowButton;
@property (nonatomic, retain) IBOutlet UILabel *hellowLabel;

@property (nonatomic, retain) NSMutableArray *madWords;

- (void) madArrays;
- (IBAction)helloYall;

@end

и

#import "Test01AppDelegate.h"

@implementation Test01AppDelegate

@synthesize window = _window;
@synthesize hellowButton;
@synthesize hellowLabel;
@synthesize madWords;

 - (void) madArrays {
[madWords addObject:@"Part A"];
[madWords addObject:@"Part B"];
[madWords addObject:@"Part C"];
[madWords addObject:@"Part D"];
}

- (IBAction)helloYall {

 [self madArrays];

 self.hellowLabel.text = [madWords objectAtIndex:0];

}

Я могу установить текст helloLabel с помощью

@"some text here";

и работает нормально. Кроме того, я попытался скопировать метод madArrays в метод helloYall, но он все еще не работал. Как я уже сказал, я могу вручную установить текст, и он работает, но я бы хотел получить информацию из массива. В конце концов, я хотел бы перебрать массив, чтобы получать текст при каждом нажатии кнопки, но по одному шагу за раз. Благодаря.

Ответы [ 3 ]

3 голосов
/ 22 сентября 2011

Вы никогда не создадите массив madWords. Вам необходимо добавить:

self.madWords = [NSMutableArray array];

вверху:

 - (void) madArrays {

вероятно, будет хорошим местом. Другими, возможно, хорошими местами будут метод класса init или метод контроллера вида viewWillAppear.

0 голосов
/ 22 сентября 2011

Похоже, madArrays по-прежнему nil, когда вы приходите, чтобы заполнить его. В какой-то момент вам нужно что-то вроде [self setMadArrays:[[NSMutableArray alloc] init]];. Кроме того, не забудьте освободить madArrays в dealloc перед вызовом super, так как у вас будет утечка памяти.

0 голосов
/ 22 сентября 2011
   // Or you can try this in your init Method:

    //first allocate the ivar

- (void)myInitMethod {

    madArrays = [[NSMutableArray]alloc]init];
}


//then you can do anything directly to the ivar or throughout de setter

- (void)doAnythingWithiVar {

// do your stuff

}

    //when you are done you can dealloc your ivar

- (void)dealloc {

    [madArrays release];
    [super dealloc];
}
...