В настоящее время я использую SWRevealViewController для меню боковой панели в своем приложении. Когда я нажимаю одну из опций, контроллер представления назначения не имеет кнопки "назад", потому что он не пришел из правильного контроллера (например, страницы).
Поэтому я хочу вручную создать кнопку возврата на контроллере представления назначения, который вернется к контроллеру домашнего представления.
Я просмотрел код здесь: Как вручную установить "Назад" назначение в приложениях iOS
Но я изо всех сил стараюсь реализовать это в Swift (одна ошибка за другой!). Любая помощь? Спасибо!
ИЗМЕНИТЬ
Я попробовал предложение ниже, но кнопка "Назад" просто не появляется. У этого может быть что-то с тем, что у меня есть навигатор, скрытый в других представлениях, и сделайте следующее в представлении назначения:
override func viewDidLoad() {
super.viewDidLoad()
navigationController.setNavigationBarHidden(false, animated:true)
var myBackButton:UIButton = UIButton.buttonWithType(UIButtonType.Custom) as UIButton
myBackButton.addTarget(self, action: "popToRoot:", forControlEvents: UIControlEvents.TouchUpInside)
var myCustomBackButtonItem:UIBarButtonItem = UIBarButtonItem(customView: myBackButton)
self.navigationItem.leftBarButtonItem = myCustomBackButtonItem
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
func popToRoot(sender:UIBarButtonItem){
self.navigationController.popToRootViewControllerAnimated(true)
}
Не знаете, почему кнопка возврата не появится?
Edit
Это готовый метод с моего контроллера боковой панели. Если есть способ проверить тестовый идентификатор segue, тогда я могу установить здесь обратную кнопку?
- (void) prepareForSegue: (UIStoryboardSegue *) segue sender: (id) sender
{
// Set the title of navigation bar by using the menu items
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
UINavigationController *destViewController = (UINavigationController*)segue.destinationViewController;
destViewController.title = [[_menuItems objectAtIndex:indexPath.row] capitalizedString];
if ( [segue isKindOfClass: [SWRevealViewControllerSegue class]] ) {
SWRevealViewControllerSegue *swSegue = (SWRevealViewControllerSegue*) segue;
swSegue.performBlock = ^(SWRevealViewControllerSegue* rvc_segue, UIViewController* svc, UIViewController* dvc) {
UINavigationController* navController = (UINavigationController*)self.revealViewController.frontViewController;
[navController setViewControllers: @[dvc] animated: NO ];
[self.revealViewController setFrontViewPosition: FrontViewPositionLeft animated: YES];
};
}
}