如何推送到同一视图控制器中的不同 UITableView,并导航回第一个 UITableView



>我有一个标签栏控制器设置。当用户选择一个选项卡时,它会将他们带到一个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向左滑动,您的标签栏不会消失!

最新更新