UILabel不会显示以前的字符,只显示最后一个字母

时间:2014-05-06 10:04:35

标签: ios xcode loops label nstimer

目标是枚举String中的每个字符。那是' w'然后在1秒之后出现将由' h'然后' e'那么' n'。 问题我的标签只显示最后一个字母。

我做了什么:     1.拖动PlayViewController上的标签和按钮。     2.为Label创建属性     3.为按钮创建动作

在我的PlayViewController.h中:

#import <UIKit/UIKit.h>

@interface PlayViewController : UIViewController

@property (strong, nonatomic) IBOutlet UILabel *listChar;

- (IBAction)startGame:(id)sender;

@end

在我的PlayViewController.m中:

#import "PlayViewController.h"

@interface PlayViewController ()

@end

@implementation PlayViewController

NSString *word;
NSTimer *myTimer;

- (void)viewDidLoad 
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.listChar.text = @" ";
    word = @"when";

}

- (IBAction)startGame:(id)sender {
    myTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(listLetter:) userInfo:nil repeats:YES];
}


-(void) listLetter:(NSTimer*) myTimer {
    for(int i=0; i<[word length]; i++){
        unichar letter = [word characterAtIndex: i];
        self.listChar.text = [NSString stringWithFormat:@"%C", letter];
    }
}

@end

1 个答案:

答案 0 :(得分:0)

如果你想知道为什么这么开心,那么请参考 @Nitin的答案,如果你想以其他方式解决,那么只需使用以下代码

-(void) listLetter:(NSTimer*) myTimer
    static int pos = 1;
    self.listChar.text = [word substringToIndex:pos];
    if (++pos > word.length) {
        [myTimer invalidate];
    }
}