Ios 加载自定义子视图';从程序上看,就像是细胞一样?

Ios 加载自定义子视图';从程序上看,就像是细胞一样?,ios,swift,uitableview,uiview,swift2,Ios,Swift,Uitableview,Uiview,Swift2,我以前有一个带有自定义单元格的tableView,显示商店: func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell : shopsTableViewCell = tableView.dequeueReusableCellWithIdentifier("shopCell", forIndexPath:

我以前有一个带有自定义单元格的tableView,显示商店:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

        let cell : shopsTableViewCell = tableView.dequeueReusableCellWithIdentifier("shopCell", forIndexPath: indexPath) as! shopsTableViewCell
但是,由于我们在主视图中添加了一个滚动视图,并且苹果不建议/允许混合使用
scrollView
tableView
,因此我删除了table视图,并将自定义单元格替换为自定义
UIView
。 我想继续做同样的行为: 1-检测数组中有多少个值。 2-为每个数组索引实例化UIView 3-使用图像、位置、约束等值设置UIView 4-将其添加到当前视图

我正在使用序列图像板,但我看不到如何从序列图像板实例化自定义UIView。此外,此UIView是ViewController内部的子视图

我使用Outlet进行了自定义UIView课程:

import Foundation
import UIKit
class connectedShop : UIView{

    @IBOutlet weak var bannerViewHight: NSLayoutConstraint!

    @IBOutlet weak var bannerViewTop: NSLayoutConstraint!
    @IBOutlet weak var bannerViewLeft: NSLayoutConstraint!
    @IBOutlet weak var bannerViewRight: NSLayoutConstraint!

    @IBOutlet weak var banerDiscount: UIImageView!
    @IBOutlet weak var bannerImageShop: UIImageView!
    @IBOutlet weak var bannerTitle: UILabel!
    @IBOutlet weak var bannerDescription: UILabel!
    @IBOutlet weak var bannerButton: UIButton!

    @IBAction func bannerButtonAction(sender: UIButton) {

    }

}
在我的故事板中,我已将子视图“connected shop”连接到此自定义类。还将情节提要Id设置为customView:

我想实例化这个自定义子视图,每个连接的商店一个,就像我在tableView中所做的那样。 我试过这个,但它坏了

let storyBoard = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle())
                let viewController = storyBoard.instantiateViewControllerWithIdentifier("customView")
我还尝试创建一个新的自定义类,不带插座:

    import Foundation
import UIKit
class customShop : UIView{

    var bannerViewHight: NSLayoutConstraint!
    var bannerViewTop: NSLayoutConstraint!
    var bannerViewLeft: NSLayoutConstraint!
    var bannerViewRight: NSLayoutConstraint!
    var banerDiscount: UIImageView!
    var bannerImageShop: UIImageView!
    var bannerTitle: UILabel!
    var bannerDescription: UILabel!
    var bannerButton: UIButton!

}
试着这样做:

var connectedShop : customShop = customShop()

                connectedShop.bannerTitle.text = "custom Shop"
                self.view.addSubview(connectedShop)
但它因这个错误而崩溃:

fatal error: unexpectedly found nil while unwrapping an Optional value

有人能帮我吗?

尝试加载nib并将其转换到您的课堂:

let shopVw = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("customView") as! shopViewController
self.navigationController?.pushViewController(shopVw, animated: true) // this is the code for navigation
let view = NSBundle.mainBundle().loadNibNamed("YourClassView", owner: self, options: nil).first as! YourClassView

警告:您可以在
viewDidLoad
中加载xib,但您应该在
viewWillLayoutSubviews
中使用视图进行操作,以便设置并运行约束,从而使视图大小正确。

尝试加载nib并将其强制转换到类:

let view = NSBundle.mainBundle().loadNibNamed("YourClassView", owner: self, options: nil).first as! YourClassView

警告:您可以在
viewdiload
中加载xib,但是您应该在
viewWillLayoutSubviews
中使用视图进行操作,以便设置和运行约束,从而使视图大小适当。

我认为这是导航问题我认为是导航问题我的自定义视图类继承自UIView。您的代码是针对UIViewController的,但我有一个UIView,我遇到了以下错误:无法将“connectedShop”类型的值转换为预期的参数类型“UIViewController”,我的自定义视图类继承自UIView。您的代码是针对UIViewController的,但我有一个UIView,我遇到了以下错误:无法将“connectedShop”类型的值转换为预期的参数类型“UIViewController”,我遇到了崩溃。我认为这是因为我试图实例化的子视图位于故事板中的场景中,而不是nib文件中。***由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“无法在名为“customView”的捆绑包中加载NIB:“NSBundle(loaded)”我发生崩溃。我认为这是因为我试图实例化的子视图位于故事板中的场景中,而不是nib文件中。***由于未捕获异常“NSInternalInconsistencyException”而终止应用程序,原因:“无法在名为“customView”的捆绑包:“NSBundle(loaded)”中加载NIB”