带有子元素的 ios UITableViewController 元素
Posted
技术标签:
【中文标题】带有子元素的 ios UITableViewController 元素【英文标题】:ios UITableViewController elements with childs 【发布时间】:2016-03-18 09:00:33 【问题描述】:我希望生成一个导航列表。
我有一个 UITableViewController,如果单击一个单元格,我希望在 UITabeViewController 中显示的单元格的子级,并且应该出现一个后退按钮。
目前我做/做了这个测试:
var anz = 10
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
return anz
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
if anz<10
navigationController?.popToRootViewControllerAnimated(true)
anz = 5
self.tableView.reloadData()
但是没有返回按钮(当然)。
所以它应该是这样的:
谢谢。
【问题讨论】:
细胞的孩子是什么意思? 像category这样的数据结构的一个类别可以有一个“子”-category 您想要在单元格中还是在导航栏中添加后退按钮?这段代码在视图控制器类中吗?这个视图控制器是导航控制器的孩子吗?请提供更多代码。 【参考方案1】:希望您想制作可折叠/可展开的表格视图。
你可以参考http://www.appcoda.com/expandable-table-view/
【讨论】:
谢谢你!但这不是我要找的,每个类别都可以有 x 个类别,这可以有 x 个子类别,这可以....等等... 通过为 n 个根元素设置 plist 文件,您可以管理您的类别和子类别等。 如果选择了一个类别,会有返回按钮吗? 是的,通过根据 webservices / db 以编程方式设置 plist,您可以检索。我想不需要后退按钮,再次点击类别将展开子类别列表。【参考方案2】:我在我的项目中使用了这样的扩展来处理导航返回按钮
extension UIViewController
var shouldShowBackButton: Bool
get
return navigationController?.viewControllers.indexOf(self) > 0
在你的 UIViewController 孩子中
override func viewDidLoad()
super.viewDidLoad()
if shouldShowBackButton
navigationItem.leftBarButtonItem = UIBarButtonItem(image: UIImage(named: "back"), landscapeImagePhone: UIImage(named: "land_back"), style: .Plain, target: self, action: "pop")
else
navigationItem.setHidesBackButton(true, animated: false)
【讨论】:
谢谢!但是这是什么意思:“return navigationController?.viewControllers.indexOf(self) > 0”或者我该如何改变这个? navigationItem.leftBarButtonItem = UIBarButtonItem(image: UIImage(named: "back"), LandscapeImagePhone: UIImage(named: "land_back"), style: .Plain, target: self, action: "pop" ) 不显示任何按钮! 您能否确保您拥有名称为“back”的资源(资产)。这是自定义的后退按钮。如果 leftBarButtonItem 自定义,你应该拥有它 通常你不应该改变“return navigationController?.viewControllers.indexOf(self) > 0”它适用于所有视图控制器,但如果在某些情况下根据你的设计要求你需要更新这种行为你可以简单地覆盖这个 var 并返回 false。 好的,我想我明白了!但是代码navigationItem.leftBarButtonItem = UIBarButtonItem(image: UIImage(named: "back"), landscapeImagePhone: UIImage(named: "land_back"), style: .Plain, target: self, action: "pop")
没有显示返回按钮。【参考方案3】:
你必须在这里管理一个条件 1.首先在导航栏上添加一个返回按钮并隐藏它。 2.当您选择表格视图的单元格而不是更改标签号或增加计数来管理条件时。 3.汤哟有2个数组,您在表格视图中加载第一个数组,当用户从表格视图中选择单元格时,您增加标签号并重新加载表格视图,此时您必须管理标签2条件以加载第二个表格视图上的数组并管理后退按钮及其减少计数的操作。
【讨论】:
【参考方案4】:要在导航栏中有返回按钮,您需要按下控制器。
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
if anz<10
navigationController?.popViewControllerAnimated(true)
anz = 5
let vc = YourViewController with custom INIT where you can pass anz
navigationController?.pushViewController(vc, animated: true)
这里 YourViewController 是您当前的视图控制器,其中包含您在图片中显示的表格视图。
【讨论】:
对不起,我是 ios 的新手,但你对“YourViewController”的意思是什么 你的视图控制器类,你有上面你在问题中提到的代码:)以上是关于带有子元素的 ios UITableViewController 元素的主要内容,如果未能解决你的问题,请参考以下文章
兼容性—IE6/7下带有overflow:hidden属性的父级元素包不住带有position:relative属性的子元素