协议方法不起作用

时间:2015-08-02 12:45:53

标签: ios swift protocols

我尝试从这里添加UIGridView:https://github.com/tanin47/UIGridView

在手册的区别,我使用故事板。如手册中所述,我通过协议UIGridViewDelegate扩展UITableViewController,所以我得到了这个结果:

class SmilesViewController: UITableViewController, UIGridViewDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    @objc func gridView(grid: UIGridView!, widthForColumnAt columnIndex: CInt) -> CGFloat {
        return 100
    }

    @objc func gridView(grid: UIGridView!, heightForRowAt rowIndex: CInt) -> CGFloat {
        return 100
    }

    @objc func numberOfColumnsOfGridView(grid: UIGridView!) -> Int {
        return 3
    }

    @objc func numberOfCellsOfGridView(grid: UIGridView!) -> Int {
        return 9
    }

    @objc func gridView(grid: UIGridView!, cellForRowAt rowIndex: CInt, andColumnAt columnIndex: CInt) -> UIGridViewCell! {
        var cellIdentifier: String = "smile_cell"

        var cell: UIGridViewCell? = grid.dequeueReusableCellWithIdentifier(cellIdentifier) as? UIGridViewCell
        if cell != nil {
            cell = NSBundle.mainBundle().loadNibNamed("SmilesTableViewCell", owner: self, options: nil)[0] as? UIGridViewCell
        }

        return cell!
    }

    /*@objc func gridView(grid: UIGridView!, didSelectRowAt rowIndex: CInt, andColumnAt columnIndex: CInt) {

    }*/
}

但协议功能的断点不起作用。所以我尝试将cutom类添加到我的Table View中并得到了这个:

Storyboard scene

但无论如何它都不起作用。

我是swift的新手,我没有经验将基于xib的应用程序转换为storyboard应用程序。来自github的演示应用程序非常完美。我不明白原因,为什么我的应用程序无法正常工作。在故事板中是否移植了问题或错误?

而且,也许有人给我一个更好地实现ios Grid的链接

更新

示例项目有" uiGridViewDelegate"连接,在我的项目中我无法将其与我的控制器代码连接 enter image description here

1 个答案:

答案 0 :(得分:1)

我从GitHub下载了这个项目,我现在唯一能注意到的是。在项目中,dataSource的{​​{1}}未与您正在进行的UIGridView相关联。所以删除它。

实际连接的是UIViewController。不是uiGridViewDelegate,因为你的图像显示。

来自GitHub项目的图片:

enter image description here

试试。