2016-06-02 2 views
0

В настоящее время я пытаюсь создать меню popover с помощью navigationBar и backButton, которые возвращают меня в основной ViewController.Неполная функция функции BackButton C

Сообщения здесь очень помогли мне создать мои функции. Я поставил NSLogs в свой код, и все работает отлично ... Но сам backButton, который ничего не делает.

So. Моя кнопка назад объявлена ​​в моем файле .h так:

@property (strong, nonatomic) IBOutlet UIButton *backButton; 

и у меня есть эти две функции в моей .m:

-(void)setBackButton:(UIButton *)backButton 
{ 
    NSLog(@"setBackButton: called"); 

    [_backButton addTarget:self action:@selector(backBtn:) forControlEvents:UIControlEventTouchUpInside]; 

    UIBarButtonItem *backButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton]; 
    [self.navigationItem setBackBarButtonItem:backButtonItem]; 
} 

- (IBAction)backBtn:(id)sender { 
    NSLog(@"backBtn: called"); 
    [[self navigationController] popViewControllerAnimated:YES]; 
} 

И когда я нажимаю мой BackButton, правильно отображается NSLog ,

Но я не знаю, как позвонить, чтобы вернуться к моему представлению. У кого-нибудь есть идея?

+0

try popToRootViewControllerAnimated: YES –

+0

Я просто попытался и ничего не изменил ^^ Но во всем моем коде я не вижу ничего, что могло бы правильно запустить функцию возврата x) –

+0

положить точку останова в методе backBtn и попытаться распечатать описание контроллера навигации и попытаться распечатать контроллер корневого представления. Кстати, как вы представляете новый контроллер с вашего контроллера корневого представления? –

ответ

0

Предположим, у вас есть два контроллера A и B Так что, если вы добавляете

[[self navigationController] popViewControllerAnimated:YES]; 

в контроллер B, он будет работать только лишь тогда, когда вы выталкиваются B, используя правильный метод навигации с А.

в случае раскадровки, вы должны нажать от А до в, как

A *aCntrl = [self.storyboard instantiateViewControllerWithIdentifier:@"A"]; 
[self.navigationController pushViewController:aCntrl animated:YES]; 

в случае неиспользования раскадровки, вы должны нажать от А к в, как

A *aCntrl = [[A alloc] initWithNibName:@"A" bundle:nil]; 
[self.navigationController pushViewController:aCntrl animated:YES]; 

В этом случае

[self.navigationController popViewControllerAnimated:YES]; 

должен работать.

Просто проверьте, как вы переходите от A к B. Это должен быть pushViewController, а не presentViewController.

+0

Подождите, так что мне просто нужно включить мой основной диспетчер представлений в свой menuviewcontroller.h, а затем попробовать линии, которые вы положили? Я попробую это прямо сейчас.Но это странно, так как в моем главном viewController у меня есть функция prepareforsegue и все это. Он не чувствует логики x) –

+0

Хм, проблема у меня есть неперехваченное исключение. Он не распознает мой идентификатор viewcontroller (поэтому A в вашем сообщении: p). Я просто поместил ViewController (также попробовал View Controller). Я бы хотел изменить его в своем storyBoard, но я не могу найти, где это возможно, с помощью viewcontrollers? : o –

+0

Отлично !!! Приятно видеть, что вы решили проблему :) – Pushkraj

Смежные вопросы