Получение push-уведомлений и попытка обработки через вид предупреждения и выбор кнопки просмотра предупреждений позволяют перейти к определенному контроллеру представления.Отправлять push-уведомления через UIAlertview
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
UIApplicationState state = [application applicationState];
if (state == UIApplicationStateActive) {
NSString *cancelTitle = @"Close";
NSString *showTitle = @"Show";
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"App"
message:@"You got a new request."
delegate:self
cancelButtonTitle:cancelTitle
otherButtonTitles:showTitle, nil];
[alertView show];
} else {
//Do stuff that you would do if the application was not active
}
}
Я хочу переместить нажатие кнопки show на другой контроллер.
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if(buttonIndex == 0)
{
}
if(buttonIndex == 1)
{
[self showNewContact];
}
}
-(void)showNewContact
{
Edit_app_viewController *detail=[[Edit_app_viewController alloc]init];
UIViewController *c = [self topViewController];
NSLog(@"View iS %@",c);
[c.navigationController pushViewController:detail animated:YES];
}
Получение ошибки: Нагрузочное приложения из-за неперехваченное исключение 'NSInvalidArgumentException', причина: '- [_ UIModalItemsPresentingViewController pushViewController: анимированный]: непризнанный селектор направлен например 0x169f5f10' *** Первого стека бросить вызов:
Обратите внимание.
Update:
- (UIViewController*)topViewController
{
return [self topViewControllerWithRootViewController:[UIApplication sharedApplication].keyWindow.rootViewController];
}
Просьба указать, что находится в '[self showNewContact];' может быть проблема там. –
вы уверены, что 'topViewController' имеет' navigationController' ?? –
@MahmoudAdam Понятно, что контроллер верхнего уровня - UIModalItemsPresentingViewController not navigationController –