【问题标题】:iCarousel - Thread1 signal SIGABRTiCarousel - Thread1 信号 SIGABRT
【发布时间】:2017-10-30 06:03:26
【问题描述】:

所以我创建了一个 iCarousel 并且能够成功运行它。然而,我确实需要在视图控制器上加载多个轮播。我找到了多个 iCarousels 代码并尝试将其调整为 Swift。现在不幸的是,我得到了一个 Thread1 信号 SIGABRT,它显示在“class AppDelegate”行上。真的不知道为什么会这样。

请帮帮我!这是我为 ViewController 提供的代码

class ChangeRoomViewController: UIViewController, iCarouselDataSource, 
iCarouselDelegate {

    var hatsArray : NSMutableArray = NSMutableArray()
    var shirtsArray : NSMutableArray = NSMutableArray()

@IBOutlet weak var carousel1: iCarousel!
@IBOutlet weak var carousel2: iCarousel!

override func viewDidLoad() {

    super.viewDidLoad()

    hatsArray = ["TopHat.jpeg", "WhiteBrimHat.jpeg", "StoutHat.jpg", "BaseballCapBlackw:Red.jpg", "WhiteBaseballCap.jpg"]
    carousel1.type = iCarouselType.cylinder
    carousel1.reloadData()

    shirtsArray = ["StarWarsBlackFittedT.jpg", "CollaredFittedWhiteWithBeigeSplash.jpg", "CollaredWhiteWithZigzagLightBlueStripes.jpg", "ClooaredBlackWithWhiteStripes.jpg", "CollaredFittedNavyBlue.jpg"]
    carousel2.type = iCarouselType.cylinder
    carousel2.reloadData()
}

func carousel(_ carousel: iCarousel, viewForItemAt index: Int, reusing view: UIView?) -> UIView {

    var hatsView : UIImageView!
    var shirtsView : UIImageView!

    if view == nil {
        hatsView = UIImageView(frame: CGRect(x: 16, y: 65, width: 90, height: 60))
        hatsView.contentMode = .scaleAspectFit
        shirtsView = UIImageView(frame: CGRect(x: 16, y: 133, width: 90, height: 60))
        shirtsView.contentMode = .scaleAspectFit
    } else {
        hatsView = view as! UIImageView
        shirtsView = view as! UIImageView
    }

    hatsView.image = UIImage(named: "\(hatsArray.object(at: index))")
    shirtsView.image = UIImage(named: "\(shirtsArray.object(at: index))")

    if (carousel == carousel1) {
        return hatsView
    }else {
        return shirtsView
    }

}

func numberOfItems(in carousel: iCarousel) -> Int {
    if (carousel == carousel1) {
        return hatsArray.count
    }else {
        return shirtsArray.count
    }
}

}

【问题讨论】:

    标签: swift3 icarousel


    【解决方案1】:

    我可以重新创建您的错误,它是由于 shirtsArray 为空而导致该行

    shirtsView.image = UIImage(named: "\(shirtsArray.object(at: index))")
    

    导致您遇到的异常。

    我不知道为什么,但如果你移动这条线

        shirtsArray = ["StarWarsBlackFittedT.jpg", "CollaredFittedWhiteWithBeigeSplash.jpg", "CollaredWhiteWithZigzagLightBlueStripes.jpg", "ClooaredBlackWithWhiteStripes.jpg", "CollaredFittedNavyBlue.jpg"]
    

    刚刚分配到hatsArray,那么它就可以工作了。

    您的 viewForItemAt 函数有点混乱。为什么在决定需要哪一个之前为两个轮播创建图像/视图?

    【讨论】:

    • 非常感谢!那行得通!奇怪的是它设法使异常无效......也许是由于与“coursel1.reloadData()”的冲突
    • 关于你最后一个问题......我想我需要这样做,因为两个轮播总是同时加载图像。永远不会出现只加载一个轮播的情况。您能否详细说明或举例说明您认为我应该如何处理它?
    • 该函数将被调用两次,每次轮播一次,并相应地设置轮播参数。如果你在函数的开头测试哪一个,你只需要为被调用的特定轮播设置 imageView。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多