2016-09-20 54 views
0

我试图从厦门国际银行虽然从厦门国际银行加载子视图的UIScrollView在迅速

加载自定义的UIView customView.swift

进口的UIKit

@IBDesignable class customView: UIView { 

var view: UIView! 

override init(frame: CGRect) { 
    super.init(frame: frame) 

    xibSetup() 
} 

required init?(coder aDecoder: NSCoder) { 
    super.init(coder: aDecoder) 

    xibSetup() 
} 


func xibSetup() { 
    view = loadViewFromNib() 
    view.frame = bounds 
    view.autoresizingMask = [UIViewAutoresizing.FlexibleWidth, UIViewAutoresizing.FlexibleHeight] 

    addSubview(view) 
} 

func loadViewFromNib() -> UIView { 
    let nibName:String = "customView" 
    let bundle = NSBundle(forClass: self.dynamicType) 
    let nib = UINib(nibName: nibName, bundle: bundle) 
    let view = nib.instantiateWithOwner(self, options: nil)[0] as! UIView // **Getting error at this line** 
    return view 
} 
} 

得到错误 'EXC_BAD_ACCESS' customView.xib

文件的所有者是CustomView类。

在故事板

我有一个UIViewController(滚动视图控制器)与自定义类一个UIView:CustomView。 xib @IBDesignable传播并且一切都很好。

现在问题就开始了。我试图使用customView多次(就像在的tableView细胞)在ScrollViewController,就像我做viewOne

MyUIViewController.swift

import UIKit 


class MyUIViewController: UIViewController,UIScrollViewDelegate { 

let scrollView = UIScrollView() 
let height = CGFloat(234.0) 

override func viewDidLoad() { 
    super.viewDidLoad() 

    self.scrollView.frame = CGRectMake(0, 150, self.view.bounds.size.width, height) 
    self.scrollView.contentSize = CGSizeMake(height*3,self.view.bounds.size.width) 
    self.scrollView.backgroundColor = UIColor.redColor() 
    self.view.addSubview(self.scrollView) 

    var y = CGFloat(0.0) 

    for i in 0..<2 { 

     //Adding viewOne 
     let viewOne = self.createViewOne(i) 
     viewOne.frame = CGRectMake(0, y, 320, 200) 
     self.scrollView.addSubview(viewOne) 

     //Adding CustomView 
     let customView = self.createCustomView(i) 
     customView.frame = CGRectMake(0, y, 320, 200) 
     self.scrollView.addSubview(customView) 

     y += height 
    } 

} 

func createViewOne(index: Int) -> UIView { 
    let viewOne = UIView() 

    if index == 0{ 
     viewOne.backgroundColor = UIColor.greenColor() 
    } 

    if index == 1{ 
     viewOne.backgroundColor = UIColor.redColor() 
    } 

    return viewOne 
} 


func createCustomView(index: Int) -> UIView { 

    let customViewDummy: customView = NSBundle.mainBundle().loadNibNamed("customView", owner: self, options: nil)[0] as! customView 

    if index == 0{ 
     customViewDummy.backgroundColor = UIColor.greenColor() 
    } 

    if index == 1{ 
     customViewDummy.backgroundColor = UIColor.redColor() 
    } 

    return customViewDummy 
} 


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

我试图加载自定义在ViewController中多次从笔尖UIView。

我称为下面的链接 - How to use custom nib view in ViewController multiple times

我使用的Xcode 7.3.1

任何建议表示赞赏。先谢谢你。

+0

不能认为所有的东西都用'正确的[0]! UIView',检查数组是否有任何内容,如果是,检查'[0]'是否具有您期望的对象类型。 –

回答

0

您可以在您的customView内再创建一个view,并将其添加为subView。因此有些不匹配。试试下面的代码,并确保您filesOnwer设置为customView

@IBDesignable class customView: UIView { 

    override init(frame: CGRect) { 
     super.init(frame: frame) 

     loadViewFromNib() 
    } 

    required init?(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 

     loadViewFromNib() 
    } 

    func loadViewFromNib() -> UIView { 
     let myView = NSBundle.mainBundle().loadNibNamed("customView", owner: self, options: nil).first as! UIView 
    return myView 
    } 
} 
+0

谢谢你的回复。但是我得到了同样的错误 - let myView = NSBundle.mainBundle()。loadNibNamed(“customView”,owner:self,options:nil).first as! UIView – Smita

+0

什么错误?你能发布完整的控制台日志吗? – Santosh

相关问题