【问题标题】:incomplete backButton function objective C不完整的 backButton 功能目标 C
【发布时间】:2016-06-02 15:43:46
【问题描述】:

我目前正在尝试创建一个弹出菜单,其中包含一个导航栏和一个返回按钮,可将我带回主 ViewController。

这里的帖子对我创建函数有很大帮助。 我将 NSLogs 放入我的代码中,一切正常......但是 backButton 本身,它什么都不做。

所以。我的后退按钮在我的 .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];
}

当我点击我的后退按钮时,NSLog 会正确显示。

但我不知道该调用什么来回到我的观点。有没有人有想法?

【问题讨论】:

  • 试试 popToRootViewControllerAnimated:YES
  • 我只是尝试过,但没有任何改变 ^^ 但在我的整个代码中,我看不到任何可以正确启动后退函数的东西 x)
  • 在方法backBtn中放一个断点,并尝试打印导航控制器的描述,并尝试打印您的根视图控制器。顺便说一句,您如何从根视图控制器呈现新控制器?
  • [self navigationController] 为零吗?它的控制器是什么:[[self navigationController] viewControllers]?如果它是一个弹出窗口,我猜你以模态方式显示它,那么它必须关闭,而不是弹出,不是吗?
  • 欢迎来到 StackOverflow Adèle。以后请不要在您的帖子中包含有问题的代码(无论是调试日志还是 cmets)。谢谢!

标签: ios objective-c uibutton uinavigationbar back-button


【解决方案1】:

假设您有两个控制器 A 和 B 所以如果你要添加

[[self navigationController] popViewControllerAnimated:YES];

在控制器 B 中,只有在使用 A 的正确导航方法将您推送到 B 时,它才会起作用。

如果是故事板,你必须从 A 推到 B 就像

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

如果是非故事板,你必须从 A 推到 B 就像

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

在这种情况下

[self.navigationController popViewControllerAnimated:YES];

应该可以。

只需检查您是如何从 A 导航到 B。它应该是 pushViewController 而不是 presentViewController。

【讨论】:

  • 等等,所以我只需要在我的 menuviewcontroller.h 中包含我的主视图控制器,然后试试你放的行吗?我现在就试试。但这感觉很奇怪,因为在我的主视图控制器中,我有一个 prepareforsegue 函数和所有这些东西。感觉不合逻辑 x)
  • 嗯,我遇到的问题是一个未捕获的异常。它无法识别我的视图控制器标识符(因此您的帖子中的 A :p)。我只是放了 ViewController(也试过 View Controller)。我想在我的故事板中更改它,但我找不到在哪里,是否可以使用视图控制器来做到这一点? :o
  • 啊哈,正如我所说,我根本没有解决这个问题^^我刚刚成功地重新设置了我的viewController ID。但是从今天早上开始,我正在漫游其他答案。而且我有完全相同的代码,这真的很奇怪......我想我可能误解了 UIButton 和 UIBarButtonItem 之间的区别?
  • 试试这个 First write 方法作为@selector(backBtn)。不要在其中添加:和 btnBack 方法 - (void)backBtn { NSLog(@"backBtn: called"); [self.navigationController popViewControllerAnimated:YES];如果我以正确的方式可视化您的问题,这应该可以工作。
  • NSLog 每次都会出现。我在选择器之后删除了“:”(我现在有一个警告“未声明的选择器”),并用 [self.navigationController popViewControllerAnimated:YES] 更改了您在答案中输入的行,但没有任何改变。我认为问题可能完全出在其他地方,比如我忘记在我的 sotryboard 中的东西?或者其他地方,但肯定是愚蠢的......
猜你喜欢
  • 1970-01-01
  • 2014-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-28
  • 1970-01-01
  • 2013-09-22
  • 1970-01-01
相关资源
最近更新 更多