Проблема с строкой / меткой - PullRequest
       30

Проблема с строкой / меткой

0 голосов
/ 18 августа 2011

У меня проблема с меткой, показывающей строку.

Итак, в принципе, у меня есть функция - (void) didFinishUpdatesSuccessfully. Если эта функция вызывается, это означает, что действие было успешно завершено. Он создает отметку времени и сохраняет ее в NSUserDefaults. Все это работает как шарм .. Вот функция:

    - (void) didFinishUpdatesSuccessfully {

        // Create formatted date string
        NSDate *currDate = [NSDate date];
        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
        [dateFormatter setDateFormat:@"dd/MM/YYYY - hh:mm:ss a"];
        NSString *dateString = [dateFormatter stringFromDate:currDate];

        NSMutableString* lastUpdated;
        lastUpdated = [[NSMutableString stringWithFormat:@"%@",dateString] retain];
        NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
        [defaults setObject:lastUpdated forKey:@"lastUpdated"];
        [defaults synchronize];

        //--- Alert dialog
        NSString *title;
        title = @"All the latest hotspots have now been saved!";
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle: title
                                                    message: lastUpdated
                                                   delegate: nil
                                          cancelButtonTitle: [FileUtils appResourceForKey:@"HOTSPOT_GENERAL_BUTTON_TITLE_OK"]
                                          otherButtonTitles: nil];

// ------------------------
//Create label
    UILabel *UpDLabel = [[UILabel alloc] initWithFrame:CGRectMake(50, 205, 250, 100)];
    UpDLabel.backgroundColor = [UIColor clearColor]; // [UIColor brownColor];
    UpDLabel.font = [UIFont fontWithName:@"Helvetica" size: 11.0];
    UpDLabel.shadowColor = [UIColor whiteColor];
    UpDLabel.shadowOffset = CGSizeMake(1,1);
    UpDLabel.textColor = [UIColor blackColor];
    UpDLabel.textAlignment = UITextAlignmentRight; // UITextAlignmentCenter, UITextAlignmentLeft
    UpDLabel.lineBreakMode = UILineBreakModeWordWrap;
    NSString *lupdate   = [NSString stringWithFormat: @"Last Update: %@", lastUpdated];

    UpDLabel.text = lupdate;

    [self.view addSubview:UpDLabel];

    [UpDLabel release];
// ------------------------     


        [dateFormatter release];
        [lastUpdated release];
        [alert show];
        [alert release];

        //--- remove indicator view
        [self indicatorViewShow:NO];

    }

Отображается метка со строкой даты. Он переопределяет сам себя, но, похоже, сохраняет предыдущую строку, поэтому выглядит так, будто просто добавляет еще один слой поверх предыдущего. Или, другими словами, если я выполню - (void) didFinishUpdatesSuccessfully 3 раза, он покажет 3 строки даты друг на друге, которые выглядят прикрученными ...

Что я делаю не так?

Приветствие Jan

Ответы [ 3 ]

1 голос
/ 18 августа 2011

Вы воссоздаете и повторно добавляете UpDLabel к своему представлению при каждом вызове метода didFinishUpdatesSuccesfully.

Вместо этого сделайте UpDLabel свойством вашего класса:

UILabel *UpDLabel
@property (nonatomic, retain) UILabel *upDLabel

И вкод в didFinishUpdates успешно сделать:

if (!self.upDLabel) {
    self.upDLabel = [[[UILabel alloc] initWithFrame:CGRectMake(50, 205, 250, 100)] autorelease];
    self.upDLabel.backgroundColor = [UIColor clearColor]; // [UIColor brownColor];
    self.upDLabel.font = [UIFont fontWithName:@"Helvetica" size: 11.0];
    self.upDLabel.shadowColor = [UIColor whiteColor];
    self.upDLabel.shadowOffset = CGSizeMake(1,1);
    self.upDLabel.textColor = [UIColor blackColor];
    self.upDLabel.textAlignment = UITextAlignmentRight; // UITextAlignmentCenter, UITextAlignmentLeft
    self.upDLabel.lineBreakMode = UILineBreakModeWordWrap;

    [self.view addSubview:self.upDLabel];

}

NSString *lupdate   = [NSString stringWithFormat: @"Last Update: %@", lastUpdated];
self.upDLabel.text = lupdate;
0 голосов
/ 18 августа 2011

Почему бы вместо этого не создать UILabel внутри метода - viewDidLoad?Сделайте метку свойством класса, затем создайте метку для - viewDidLoad, затем обновите строку внутри метки внутри - didFinishUpdatesSuccessfully.Будет удобнее.

0 голосов
/ 18 августа 2011

Это потому, что вы продолжаете добавлять подпредставления в свое представление, а не просто помещаете новый текст в UILabel. Настройте UILabel один раз, а затем просто измените текст с помощью UpDLabel.text = lupdate.

Джо

...