Skocz do zawartości

Witaj!

Zaloguj lub Zarejestruj się aby uzyskać pełny dostęp do forum.

Zdjęcie
- - - - -

Brak odświeżania labela


  • Zaloguj się, aby dodać odpowiedź
6 odpowiedzi w tym temacie

#1 luk4ward

luk4ward
  • 16 postów

Napisano 30 sierpnia 2012 - 22:13

Witam,

programowanie na iOS dopiero zaczynam i kupiłem sobie książkę Objective-C Podstawy. Problem napotkałem już przy pierwszej aplikacji... Generalnie sprawa jest prosta: symulator rzutu monetą. I niestety nie działa, ponieważ nie odświeża się jakby tekst który po każdym rzucie powinien się uaktualnić. Jeżeli chodzi o kod to jest praktycznie all:

- (void) simulateCoinToss:(BOOL)userCalledHeads {
    BOOL coinLandedOnHeads = (arc4random() % 2) == 0;
    
    result.text = coinLandedOnHeads ? @"Orzeł" : @"Reszka";
    
    if (coinLandedOnHeads == userCalledHeads)
        status.text = @"Prawidłowo";
    else
        status.text = @"Nieprawidłowo";

    CABasicAnimation *rotation = [CABasicAnimation animationWithKeyPath:@"transform.roration"];
    rotation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    rotation.fromValue = [NSNumber numberWithFloat:0.0f];
    rotation.toValue = [NSNumber numberWithFloat:720 * M_PI / 180.0f];
    rotation.duration = 2.0f;
    [status.layer addAnimation:rotation forKey:@"rotate"];
    
    CABasicAnimation *fade = [CABasicAnimation animationWithKeyPath:@"opacity"];
    fade.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    fade.fromValue = [NSNumber numberWithFloat:0.0f];
    fade.toValue = [NSNumber numberWithFloat:1.0f];
    fade.duration = 3.5f;
    [status.layer addAnimation:fade forKey:@"fade"];
    
}

- (IBAction)callHeads {
    [self simulateCoinToss:YES];
}

- (IBAction)callTails {
    [self simulateCoinToss:NO];
}

Jeszcze może link do samego projektu: [url]https://dl.dropbox.com/u/65394292/CoinToss.zip[/url]

#2 tmkszlc

tmkszlc

  • 1 846 postów
  • SkądSzczecin, PL

Napisano 30 sierpnia 2012 - 23:15

Z tego co ja tu widzę to masz coś tu źle:

    BOOL coinLandedOnHeads = (arc4random() % 2) == 0;
// usuń == 0


#3 luk4ward

luk4ward
  • 16 postów

Napisano 31 sierpnia 2012 - 05:43

Pomimo zmiany nadal brak odświeżania :/

#4 metal_man

metal_man
  • 489 postów
  • SkądChorzów

Napisano 31 sierpnia 2012 - 07:01

Masz plik implementacji. Pokaz co masz w pliku naglowkowym.

#5 m1entus

m1entus
  • 59 postów
  • SkądKraków, PL

Napisano 31 sierpnia 2012 - 07:52

- (void) viewDidLoad {
    [super viewDidLoad];
    self.status = nil;
    self.result = nil;
}

Wiesz co to oznacza ? Przy ładowaniu twojego widoku, zerujesz wskaźnik do Outletów tekstu. Pomyliłeś się przy przepisywaniu zapewne i zerowanie powinno odbywać się podczać metody viewDidUnload:

- (void) viewDidUnload {
    [super viewDidUnload];
    self.status = nil;
    self.result = nil;
}


#6 luk4ward

luk4ward
  • 16 postów

Napisano 31 sierpnia 2012 - 07:57

@m1entus - dzięki, takie błędy najłatwiej przegapić :) Teraz wszystko śmiga

#7 jacflay

jacflay
  • 129 postów

Napisano 31 sierpnia 2012 - 09:13

Tak na marginesie całość przykładów można pobrać ze strony, która podana jest na helion.pl.




Użytkownicy przeglądający ten temat: 1

0 użytkowników, 1 gości, 0 anonimowych