Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
К сожалению, у первого подхода был явный недостаток: программно создавая кнопку и вешая ее на навигейшен бар, я не смог бы добиться легко стандартной стрелочки и кнопки назад (у меня просто не было этой иконки, она походу берется из стандартных asset-ов (наборов)).
self.navigationController.navigationBar.topItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil];
Так как анимация по своей сути — действие асинхронное (то есть неизвестен точный момент времени, когда вызовется кусок кода, означающий окончание действия, вследствие чего его невозможно синхронизировать с другими кусками кода.
NSLog(@"animation begin");
[CATransaction begin];
UIViewController *tmp = [UIViewController new];
tmp.view.backgroundColor = [UIColor redColor];
[navigationController pushViewController:tmp animated:YES];
[CATransaction setCompletionBlock:^{
NSLog(@"animation end");
}];
[CATransaction commit];
if(self.delegate && [self.delegate conformsToProtocol:@protocol(MyProtocol)] && [self.delegate respondsToSelector: @selector(aMethod)]){ [delegate aMethod]; }
@property (weak, nonatomic) id < MyProtocol> delegate;
if ([delegate respondsToSelector:@selector(aMethod)]){ [delegate aMethod]; }
[delegate aMethod];
Не делайте так. Если endIgnoringInteractionEvents не вызовется потом будет очень сложно понять в чем баг.[[UIApplication sharedApplication] beginIgnoringInteractionEvents]; [[UIApplication sharedApplication] endIgnoringInteractionEvents];
UINavigationController и с чем его едят: базовые принципы, субклассирование, защита от двойных переходов и многое другое