Biały ekran w symulatorze iOS z XCODE.
#1
Napisano 03 stycznia 2014 - 21:13
#2
Napisano 03 stycznia 2014 - 21:32
#3
Napisano 03 stycznia 2014 - 21:47
Mój kod dla pliku ViewController.h
#import <UIKit/UIKit.h> @interface ViewController : UIViewController { UILabel *status; UILabel *result; } @property (nonatomic, retain) IBOutlet UILabel *status; @property (nonatomic, retain) IBOutlet UILabel *result; - (IBAction)callHeads; - (IBAction)callTails; @end
Mój kod dla pliku ViewController.m
#import "ViewController.h" #import "QuartzCore/QuartzCore.h" @implementation ViewController @synthesize status, result; - (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.rotation"]; 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]; } - (void) viewDidUnload { [super viewDidUnload]; self.status = nil; self.result = nil; } @end
Do tego plik .xib z interfejsem jak poniżej:
[ATTACH=CONFIG]19507[/ATTACH]
#4
Napisano 03 stycznia 2014 - 22:21
#5
Napisano 03 stycznia 2014 - 22:30
W Twoim kodzie pracujesz bezpośrednio na status/result np. robiąc tak: result.text = ...
Jeśli już chcesz koniecznie pracować bezpośrednio na wskaźnikach to dla @property status, odpowiednie jest _status (XCode automatycznie tworzy sobie taką zmienną dla @property).
Dostajesz biały ekran bo oba UILabel są puste.
Ewentualnie możesz jeszcze jawnie napisać tak (stare podejście):
@synthesize result = result;
#6
Napisano 03 stycznia 2014 - 22:34
#7
Napisano 03 stycznia 2014 - 22:36
Dostaje pusty ekran, bo ma ustawiony jako interface storyboard, który jest pusty a interface tworzy w (niezałączonym i) niepodłączonym do niczego xib'ie.
A to faktycznie prawda.
#8
Napisano 03 stycznia 2014 - 22:54
#9
Napisano 04 stycznia 2014 - 11:08
powinieneś używać storyboard, a nie xib'ów
And why is that?
Użytkownicy przeglądający ten temat: 1
0 użytkowników, 1 gości, 0 anonimowych