>我有一个标签栏控制器设置。当用户选择一个选项卡时,它会将他们带到一个UIViewController
。目前,我在此视图控制器中有一个UITableView
设置。我想做的是,在从 TableView1 中选择一个单元格时,我希望有一个"推送"效果,其中 TableView2 从屏幕右侧进入并接管。
我发现了以下问题,类似于我的问题:同一视图控制器中的 UITableView segue
其中一个建议正是我想要实现的,但是我无法让它具有那种幻灯片效果。
我所做的是添加两个UITableViews
,然后在viewDidLoad中tableView1.hidden = true
。
然后在代码中:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
var cell: UITableViewCell!
if tableView == tableView1
{
// Dequeue the cell to load data
cell = tableView.dequeueReusableCellWithIdentifier("ID1", forIndexPath: indexPath)
....
}
else if tableView == tableView2
{
// Dequeue the cell to load data
cell = tableView.dequeueReusableCellWithIdentifier("ID2", forIndexPath: indexPath)
....
}
return cell
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
{
if tableView == tableView1
{
tableView2.hidden = false
tableView1.hidden = true
playlistVideosTableView.reloadData()
// Deselects the row
tableView1.deselectRowAtIndexPath(indexPath, animated: true)
}
}
但是,它没有那种"幻灯片效果",并使表格视图立即显示。
我可以使用第二个表格视图进行另一UIViewController
,但我不想让我的标签栏消失。
实现这一点,我怎样才能确保确保回到第一个UITableView?
谢谢
我建议简单地创建另一个具有UITableView的UIViewController,所以最好是UITableViewController。
然后在tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
中调用新视图控制器的 segue。这将为您提供所需的效果,也是一个更清洁的解决方案。
如果您将此选项卡中的所有视图控制器嵌入到导航控制器中,则使用此解决方案也不会丢失选项卡栏。
编辑:示例代码
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
performSegueWithIdentifier("editSpecialStage", sender: tableView.cellForRowAtIndexPath(indexPath))
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let indexPath = self.tableView.indexPathForCell(sender as! UITableViewCell)!
let secondViewController = segue.destinationViewController as! SecondViewController
}
在情节提要中,您有一个导航控制器作为选项卡栏中的第一个视图控制器。然后是第一个视图控制器,然后是第二个,通过推送 segue 连接。
我可以用第二个表视图制作另一个 UIView控制器,但我不想让我的标签栏消失。
为什么你的标签栏会消失?如果你使用UINavigationController
就不会
就照我说的做,好吗?
首先创建一个新的视图控制器,并使用 show segue 连接两个 VC
First VC -show-> Second VC
现在整个画面看起来像
Tab Bar VC -view controllers-> First VC -show-> Second VC
现在将其修改为
Tab Bar VC -view controllers-> Navigation Controller -root vc-> First VC -show-> Second VC
现在,续集会将第二个VC向左滑动,您的标签栏不会消失!