从 StoryBoard 获取对 TableViewController 中左按钮的引用
Posted
技术标签:
【中文标题】从 StoryBoard 获取对 TableViewController 中左按钮的引用【英文标题】:Get reference to left button in TableViewController from StoryBoard 【发布时间】:2013-11-21 15:55:57 【问题描述】:我在情节提要中遇到带有后退按钮的问题。
故事板定义如下:
我的问题是,在按下 segue 后,我无法获得返回按钮的任何参考。
我的 viewcontroller
继承自 UITableViewController
类。
我已经尝试了通常的嫌疑人:
self.navigationItem.leftBarButtonItem, self.navigationItem.backBarButtonItem.
在所有这些中,引用都是零。
在SettinsViewController
的viewDidLoad
中我只这样做:
[super viewDidLoad];
[self.tableView registerNib:[UINib nibWithNibName:[CredentialTableViewCell nibName] bundle:nil]
forCellReuseIdentifier:[CredentialTableViewCell reuseIdentifier]];
self.tableView.backgroundView = nil;
self.tableView.backgroundColor = HEXCOLOR(0xebf2f9ff);
按下 segue 时我什么都不做,后退按钮是使用前一个视图控制器标题自动生成的,而不是使用我的“后退”标题,我无法获得对它的引用。
有谁知道我怎样才能获得这个自动生成的后退按钮的参考?
提前致谢。
【问题讨论】:
【参考方案1】:你试过了吗:
UIBarButtonItem *backButton = self.navigationItem.backBarButtonItem;
【讨论】:
【参考方案2】:作为健全性检查,您的 TableViewController 嵌入在 UINavigationController 中,对吗?从图片上看有点难。
其次,我的后退按钮实际上是视图的一个属性,它将视图控制器推到屏幕上。因此,如果您想使用显示给用户的后退按钮,您需要询问 ViewController 推动当前视图的后退按钮。
来自Docs:
如果***视图控制器没有自定义左栏按钮项,但前一个视图控制器的导航项在其 backBarButtonItem 属性中有有效项,则导航栏显示该项。
因此,要让您的后退按钮显示“后退”,请更改 Previous 视图控制器(推动设置视图控制器的那个)的 Back Button 字段.
【讨论】:
感谢您的回答,我有一个导航控制器,我理解您的建议。但是我不知道为什么即使在父级中后退按钮也为零,但是如果我执行 parentViewController.navigationBar.items,我确实得到了两个导航项,只是左侧不是我需要的按钮(我需要暂时禁用它)。【参考方案3】:最后我决定锁定所有界面而不是只锁定那个按钮,在一个小细节上浪费了太多时间。
我是这样做的:
[[UIApplication sharedApplication] beginIgnoringInteractionEvents];
[[UIApplication sharedApplication] endIgnoringInteractionEvents];
在这个答案中找到了建议:How can I disable the touch detection?
【讨论】:
以上是关于从 StoryBoard 获取对 TableViewController 中左按钮的引用的主要内容,如果未能解决你的问题,请参考以下文章
从 Storyboard 中获取 ViewController
是否可以以编程方式从 Swift/Objective-C 中的 UIViewController 或 Storyboard 中获取基本 UIViewController 的标识符?