使用iCarousel正确显示来自另一个故事板的控制器视图

时间:2017-06-14 09:43:18

标签: ios swift storyboard carousel

我有2个故事板(比方说SB1和SB2),在SB1中有一个iCarousel实现如下:

import UIKit
import iCarousel

class VotingViewController: UIViewController, iCarouselDataSource, iCarouselDelegate { 
    @IBOutlet var carouselView: iCarousel!

    let SB2 = UIStoryboard(name: "SB2Name", bundle: Bundle.main)

    var itemsArray:[VC2] = []
    var vc2: VC2!
    var somenumber:Int = 20

    override func awakeFromNib() {
        super.awakeFromNib()
        vc2 = SB2.instantiateViewController(withIdentifier: "VC2_Page") as! VC2
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        itemsArray = [VC2](repeating: vc2, count: somenumber.count)

        carouselView.type = .rotary
        carouselView.reloadData()
    }

// MARK: - iCarousel
    func numberOfItems(in carousel: iCarousel) -> Int {
        return somenumber
    }

    func carousel(_ carousel: iCarousel, viewForItemAt index: Int, reusing view: UIView?) -> UIView {
        let appVC = itemsArray[index]

        self.addChildViewController(appVC)
        appVC.didMove(toParentViewController: self)

        appVC.view.frame = carouselView.frame

        return appVC.view
    }

    func carousel(_ carousel: iCarousel, valueFor option: iCarouselOption, withDefault value: CGFloat) -> CGFloat {
        if (option == .spacing) {
            return value * 1.1
        }
        return value
    }
}

我想使用来自@NickLockwood的iCarousel来显示Storyboard SB2中的视图但获得一些奇怪的轮播视图,其中只有一个视图显示在旋转木马中。

我被迫使用不同的故事板的控制器视图。不要在我把所有内容放在一个故事板中的地方发布答案。 THX。

也许有人知道我错过了什么?

enter image description here

2 个答案:

答案 0 :(得分:0)

您需要告诉iCarousel通过实施以下内容来展示多少项:

  func carousel(_ carousel: iCarousel, valueFor option: iCarouselOption, withDefault value: CGFloat) -> CGFloat {

    switch option {
    case .spacing:
        return value * 1.0
    case .wrap:
        return 1
    case .visibleItems:
        return 7
    default:
        return value
    }

}

答案 1 :(得分:0)

我想出的答案是在链接中

https://github.com/nicklockwood/iCarousel/issues/808