从文档目录加载图像以在UIPageViewController中显示

时间:2016-02-11 10:11:51

标签: ios swift image directory

从文档目录加载图片然后在UIPageViewController中显示时出现问题。问题不一致,有时可以显示,有时不显示。为什么呢?

我希望有人能帮助我。感谢。

我的代码是swift。

class ViewController: UIViewController, UIPageViewControllerDataSource {

    // MARK: - Variables
    private var pageViewController: UIPageViewController?

    var objects = [String]()

    let fileManager = NSFileManager.defaultManager()

    override func viewDidLoad() {
        super.viewDidLoad()
        self.getImages()
        createPageViewController()
        setupPageControl()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func getImages(){
        // Check if file exists, given its path
        let path = fileManager.currentDirectoryPath + "Users/smartitindonesia/Downloads/Images"
        print(path)
        do {
            let items = try! fileManager.contentsOfDirectoryAtPath(path)
            let count = items.count
            print(count)
            for item in items {
                if item.hasPrefix("sukses") {
                    //itemsArray.addObject(item)
                    objects.append(item)
                    print(objects)
                }
            }
        } catch let error as NSError {
            error.description
        }
    }

    private func createPageViewController() {

        let pageController = self.storyboard!.instantiateViewControllerWithIdentifier("PageController") as! UIPageViewController
        pageController.dataSource = self

        if objects.count > 0 {
            let firstController = getItemController(0)!
            let startingViewControllers: NSArray = [firstController]
            pageController.setViewControllers(startingViewControllers as! [UIViewController], direction: UIPageViewControllerNavigationDirection.Forward, animated: false, completion: nil)
        }

        pageViewController = pageController
        addChildViewController(pageViewController!)
        self.view.addSubview(pageViewController!.view)
        pageViewController!.didMoveToParentViewController(self)
    }

    private func setupPageControl() {
        let appearance = UIPageControl.appearance()
        appearance.pageIndicatorTintColor = UIColor.grayColor()
        appearance.currentPageIndicatorTintColor = UIColor.whiteColor()
        appearance.backgroundColor = UIColor.darkGrayColor()
    }

    // MARK: - UIPageViewControllerDataSource

    func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? {

        let itemController = viewController as! PageItemController

        if itemController.itemIndex > 0 {
            return getItemController(itemController.itemIndex-1)
        }

        return nil
    }

    func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? {

        let itemController = viewController as! PageItemController

        if itemController.itemIndex+1 < objects.count {
            return getItemController(itemController.itemIndex+1)
        }

        return nil
    }

    private func getItemController(itemIndex: Int) -> PageItemController? {

        if itemIndex < objects.count {
            let pageItemController = self.storyboard!.instantiateViewControllerWithIdentifier("ItemController") as! PageItemController
            pageItemController.itemIndex = itemIndex
            pageItemController.imageName = objects[itemIndex]
            return pageItemController
        }

        return nil
    }

    // MARK: - Page Indicator

    func presentationCountForPageViewController(pageViewController: UIPageViewController) -> Int {
        return objects.count
    }

    func presentationIndexForPageViewController(pageViewController: UIPageViewController) -> Int {
        return 0
    }

}

0 个答案:

没有答案