我的入口点UITableView
(VC_A)中有UIViewController
。我有另一个UIViewController
(VC_B),其中包含UITableView
中每个条目的详细信息。我有一个从VC_A到VC_B的显示segue,当按下UITableViewCell
时会在代码中触发:
var passedCellData: CellData!
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
print("it worked!")
let currentCell = tableView.cellForRowAtIndexPath(indexPath) as! CustomCell
passedCellData = currentCell.data
self.performSegueWithIdentifier("OpenDetailSegue", sender: self as UIViewController)
}
(请注意CustomCell
扩展UITableViewCell
,passedCellData
是全局变量。)
我的VC_B自定义视图控制器有一个data
字段,所以我在prepareForSegue
中很受欢迎:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if (segue.identifier == "OpenDetailSegue") {
let svc = segue.destinationViewController as! DetailController
svc.data = passedCellData
}
}
DetailController
是VC_B的UIViewController
。
我没有在Storyboard或任何内容中设置UINavigationController
,并且UIViewController
个实例顶部都有UINavigationBar
个实例(用于设置标题)。但是,VC_B中没有“后退”按钮;它的导航栏只显示标题(因此,一旦我点击了详细信息,我就无法返回)。
我该如何解决这个问题?
答案 0 :(得分:1)
如果您拖放UINavigationBar
,则可以将UIBarButtonItem
拖放到UINavigationBar
,然后就可以为其创建操作,如下所示:
@IBAction func backButton(sender: AnyObject) {
//dismiss your viewController
self.dismissViewControllerAnimated(true, completion: nil)
}
答案 1 :(得分:0)
为此,您需要添加自定义后退按钮。
将以下行放在viewDidLoad中:
self.navigationItem.leftBarButtonItem = UIBarButtonItem(image: UIImage(named: "back.png"), style: UIBarButtonItemStyle.Plain, target: self, action: "goBack")
现在,提一下选择器:
func goBack(){
self.navigationController?.popToRootViewControllerAnimated(true)
}
希望这有帮助!