Как да избледнеете подизглед, за да покажете изглед на UIViewController, зареден от .nib

Имам ViewController, който се зарежда от .nib файл. в метода viewDidLoad създавам подизглед и го добавям към йерархията на изгледа. Как да избледнявам този подизглед, за да покажа изгледа в .nib файл?

(подизгледът е като начален екран, който искам да изчезна, за да покажа изгледа в .nib, той е настроен по този начин, тъй като беше най-лесният начин за мен.)

Ето част от моя код (опитах се да задам препратка към оригиналния изглед от перото във viewDidLoad, но не можах да го накарам да работи):

[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
NSLog(@"View did load");
//set reference to view in .nib here
UIView *currentView = self.view;

CGRect frame = [[UIScreen mainScreen] bounds];
splashView = [[splashView alloc] initWithFrame:frame];
[[self view] addSubview:splashView];
//transition did not work

[UIView transitionFromView:splashView toView:currentView duration:0.25 options:UIViewAnimationOptionTransitionCrossDissolve completion:^(BOOL finished) {
    NSLog(@"transition finished");
}];

}

Този код се срива. какво правя грешно


person vergil castelo    schedule 06.12.2012    source източник
comment
Обмисляли ли сте да използвате сценарий/сегмент?   -  person Oliver Cooper    schedule 06.12.2012


Отговори (1)


Опитайте следното вместо оригиналния код:

[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
NSLog(@"View did load");

CGRect frame = [[UIScreen mainScreen] bounds];
splashView = [[splashView alloc] initWithFrame:frame];
[[self view] addSubview:splashView];
[self.view bringSubviewToFront: splashView];

[UIView animateWithDuration: 2.0
                     delyay: 0.5 // omit if you don't need a delay
                    options: UIViewAnimationCurveEaseOut // check the documentation for other options
                 animations: ^{ 
                    splashView.alpha = 0;
                 } 
                 completion: ^(BOOL finished) {
                    [splashView removeFromSuperView];
                 }];

Не знам дали използвате ARC или не, или дали използвате сторибордове или не! Ако използвате ARC, тогава управлението на паметта е грешно в този фрагмент.

person Nenad M    schedule 06.12.2012
comment
Не използвах сторибордове, защото част от литературата, която съм чел, казваше, че сторибордовете, макар и лесни за използване, са склонни да объркват начинаещите да научат някои от основните концепции. Използвам iOS 6 и ARC. Благодаря на Nenad M, че работи перфектно. Как управлението на паметта е грешно във фрагмента? - person vergil castelo; 07.12.2012
comment
здрасти Ако използвате ARC, тогава е добре да използвате предоставената проба. В не-ARC код ще трябва да освободите/автоматично освободите splashView в някакъв момент от време. - person Nenad M; 07.12.2012