协议方法不起作用
Protocol methods don't work
我尝试从这里添加 UIGridView:https://github.com/tanin47/UIGridView
和手册不同,我用的是storyboard。正如手册中所写,我通过协议 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 class 添加到我的 Table 视图并得到这个:
但不管怎么说都行不通
我是 swift 的新手,没有将基于 xib 的应用程序转换为故事板应用程序的经验。来自 github 的演示应用程序运行完美。我不明白为什么我的应用程序不起作用。是obj-c移植问题还是storyboard错误?
而且,也许有人给我 link 以更好地实施 ios 网格
更新
示例项目有 "uiGridViewDelegate" 连接,在我的项目中我无法将它与我的控制器代码连接
我从 GitHub 下载了该项目,目前我能注意到的唯一区别是。在项目中,UIGridView
的 dataSource
没有像您正在做的那样连接到 UIViewController
。所以删除它。
实际连接的是uiGridViewDelegate
。不是 dataSource
如您的图片所示。
图片来自 GitHub 项目:
试试看。
我尝试从这里添加 UIGridView:https://github.com/tanin47/UIGridView
和手册不同,我用的是storyboard。正如手册中所写,我通过协议 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 class 添加到我的 Table 视图并得到这个:
但不管怎么说都行不通
我是 swift 的新手,没有将基于 xib 的应用程序转换为故事板应用程序的经验。来自 github 的演示应用程序运行完美。我不明白为什么我的应用程序不起作用。是obj-c移植问题还是storyboard错误?
而且,也许有人给我 link 以更好地实施 ios 网格
更新
示例项目有 "uiGridViewDelegate" 连接,在我的项目中我无法将它与我的控制器代码连接
我从 GitHub 下载了该项目,目前我能注意到的唯一区别是。在项目中,UIGridView
的 dataSource
没有像您正在做的那样连接到 UIViewController
。所以删除它。
实际连接的是uiGridViewDelegate
。不是 dataSource
如您的图片所示。
图片来自 GitHub 项目:
试试看。