以编程方式加载自定义SubView,就好像它们是Cell一样?

时间:2016-07-18 09:30:08

标签: ios swift uitableview uiview swift2

我习惯使用带有显示商店的自定义单元格的tableView:

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

        let cell : shopsTableViewCell = tableView.dequeueReusableCellWithIdentifier("shopCell", forIndexPath: indexPath) as! shopsTableViewCell

但是由于我们在主视图中添加了滚动视图,并且apple不建议/允许混合scrollViewtableView,因此我删除了表格视图并使用自定义{替换了自定义单元格{1}}的。 我想继续相同的行为: 1 - 检测数组中有多少个值。 2 - 为每个数组索引实例化UIView 3 - 使用图像,位置,约束等值设置UIView 4 - 将其添加到当前视图。

我正在使用故事板,我没有看到如何从故事板中实例化自定义UIView。此UIView也是一个位于ViewController内的子视图。

我做了一个带插座的自定义UIView类:

UIView

在我的故事板中,我已将subView“连接的商店”连接到此自定义类。同时将故事板ID设置为customView:

enter image description here

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

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) {

    }

}

我还尝试创建一个没有插座的新自定义类:

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)

任何人都可以帮我吗?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

尝试加载笔尖并将其投射到您的班级:

import {Computer} from './all';

new Computer();

警告:您可以在let view = NSBundle.mainBundle().loadNibNamed("YourClassView", owner: self, options: nil).first as! YourClassView 中加载xib,但是您应该使用viewDidLoad中的视图进行操作,以便设置和运行约束,从而正确调整视图大小。