【问题标题】:UIPageViewController wont refresh UITableViewControllersUIPageViewController 不会刷新 UITableViewControllers
【发布时间】:2021-12-22 10:53:11
【问题描述】:

有一个控制器,我们称之为 Bob,作为一个模态,它包含一些标签和一个加载 2 个表格控制器的 UIPageViewController。页面控制器第一次加载时,它会加载所有正确数据的表控制器。每当 Bob 再次打开时,表控制器的数据都不会改变。 Bob 的标签确实发生了变化,因此它从其父级接收到不同的请求。

pageController 是 UIPageViewController 的名称

我已尝试在 pageController 的数据源部分执行以下操作

pageController.dataSource = nil
pageController.dataSource = self

但它没有用。我也尝试在加载新数据后再次设置控制器,但也没有用

pageController.setViewControllers([viewController(At: 0)!], direction: .forward, animated: true, completion: nil)

在表控制器中,它们被设置为像这样刷新数据,并且在将新数据传递给它们之后调用它。我已经验证了每当 Bob 打开时都会调用它。

DispatchQueue.main.async(execute: { () -> Void in
        self.tableView.reloadData()
    })

我也尝试过完全重新创建 UIPageViewController,但也没有用。

对于如何让页面控制器使用新数据重新加载表控制器,我真的很困惑。我不认为问题出在桌面控制器上,但我愿意尝试任何事情。有人有什么想法吗?

【问题讨论】:

    标签: swift uipageviewcontroller


    【解决方案1】:

    所以原因不是我列出的任何原因。去搞清楚。相反,这是我定义表控制器的方式。我在定义控制器时而不是在加载控制器时设置了它们用于加载的值。

    所以

    private lazy var thatTableViewController: ThatTableViewController = {
        let storyboard = UIStoryboard(name: "ModalsStoryBoard", bundle: Bundle.main)
        var viewController = storyboard.instantiateViewController(withIdentifier: "ThatTableViewController") as! ThatTableViewController
        viewController.view.tag = 0
        return viewController
    }()
    

    以前也有这样的一行

    viewController.controller = Controller(id: self.markerId, activeController: .Problem)
    

    Controller 是我传递的自定义结构。但是通过将其设置在与定义 TableViewController 的变量相同的级别,它不会在调用之间更改,因为它已被缓存。所以移动了

    viewController.controller = Controller(id: self.markerId, activeController: .Problem)
    

    在定义部分之外,允许它被改变而不被缓存。

    这让我可以删除

    pageController.dataSource = nil
    pageController.dataSource = self
    

    因为数据是在我获得要加载的控制器时定义的,而不是预定义的。

    希望这将帮助其他人不要做与我相同的事情,并设置您需要其他控制器使用的任何值,而不是在您定义控制器时定义,而是稍后在您需要使用控制器时定义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多