簡體   English   中英

UIPageViewController委托/數據源方法未觸發

[英]UIPageViewController delegate/datasource methods not firing

我有這樣的設置:

UIWindow > UIViewController > UIPageViewController > UIViewController

我已經將UIPageViewController的委托和數據源設置為UIViewController內部的self ,但是,每次嘗試用數據更新UIPageViewController時,它只會顯示一個圖像。 我將父UIViewController的框架從小到大按比例縮放,也許正在影響它? 我在別處實際上沒有在UIWindow中使用相同的代碼,並且可以正常工作。 關於UIWindow有什么嗎?

任何幫助,將不勝感激!

- 編輯 -

好的,更多信息。 我從用戶選擇表視圖單元格時開始調用它。 首先,我創建一個新的UIWindow ,其大小與當前的主UIWindow相同,但位於狀態欄的頂部。 然后,我從情節UIPageViewController板上創建一個ExpandedViewController ,將其設置為與UITableViewCell相同的框架大小,為其提供一些圖像以加載到UIPageViewController ,然后告訴它重新加載其數據。 我還調整了UIPageViewController的視圖控制器內部的UIImageView的中心,稍后可以對其進行動畫處理,但這無關緊要。 然后,將ExpandedViewController的視圖添加到UIWindow 這就是代碼中的內容:

    let cell = tableView.dequeueReusableCellWithIdentifier("aCell", forIndexPath: indexPath) as! ContentTableCell

    var cellRect = tableView.rectForRowAtIndexPath(indexPath)
    var convertedFrame = tableView.convertRect(cellRect, toView: UIApplication.sharedApplication().keyWindow!)

    newWindow = UIWindow(frame: self.view.window!.bounds)
    newWindow.hidden = false
    newWindow.windowLevel = (UIWindowLevelStatusBar + 1)

    var expandedViewController = self.storyboard!.instantiateViewControllerWithIdentifier("ExpandedViewController")! as! ExpandedViewController
    expandedViewController.view.frame = convertedFrame
    expandedViewController.pageImages = imagesForTableView
    expandedViewController.reloadData(indexPath.row)

    var expandedContentViewController = (expandedViewController.pageViewController.viewControllers.last! as! ExpandedContentViewController)

    expandedContentViewController.imageView.frame = self.view.frame
    expandedContentViewController.imageView.center = CGPointMake(cellRect.width/2, cellRect.height/2 + 5)

    newWindow.backgroundColor = UIColor(red: 30/255, green: 1/255, blue: 42/255, alpha: 1)
    newWindow.addSubview(expandedViewController.view)
    newWindow.makeKeyAndVisible()

ExpandedViewController在其ViewDidLoad()方法中具有以下代碼:

    self.view.clipsToBounds = true

    pageImages = []

    // Initialise the Page View Controller from storyboard. Set ourselves as delegate and datasource to it.
    pageViewController = storyboard!.instantiateViewControllerWithIdentifier("ExpandedPageViewController")! as! UIPageViewController
    pageViewController.dataSource = self
    pageViewController.delegate = self

    // Get the View Controller for the first page of the Page View Controller and store in an array
    if let startingViewController: ExpandedContentViewController = viewControllerAtIndex(0) {
        let viewControllers: NSArray = [startingViewController]
        // Set the first page of the Page View Controller
        pageViewController.setViewControllers(viewControllers as [AnyObject], direction: .Forward, animated: false, completion: nil)
    }

    // Make sure the Page View Controller takes up full area of screen
    pageViewController.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)

    // Add the Page View Controller to current view
    self.addChildViewController(pageViewController)
    self.view.addSubview(pageViewController.view)
    self.pageViewController.didMoveToParentViewController(self)

我通過更換解決了

newWindow.addSubview(expandedViewController.view)

newWindow.rootViewController = expandedViewController

事實證明.rootViewController是向UIWindow添加視圖的推薦方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM