BLKFlexibleHeightBar行为定义器不符合UITableViewDelegate
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BLKFlexibleHeightBar行为定义器不符合UITableViewDelegate相关的知识,希望对你有一定的参考价值。
所以我正在使用this library,它允许我在桌面视图顶部制作一个栏,当我向下滚动时压缩。现在我使用桥接头将其安装在我的Swift项目中。所以我按照实现指南,将所有代码转换为Swift代码。一切正常,直到我在“配置栏行为”部分遇到问题。
条形行为定义器是知道何时放大/缩小条形的部分,具体取决于您在表格中滚动的距离。所以它使用UITableViewDelegate
(TVD)这样做。但是看看barBehaviorDefiner的source code,你可以看到它只实现了UIScrollViewDelegate
。
这就是问题。我需要将tableview的委托设置为BLKFlexibleHeightBarBehaviorDefiner类型的对象之一,但它们不是UITableViewDelegate
类型。
self.tableView.delegate = (id<UITableViewDelegate>)myBar.behaviorDefiner;
现在我知道TVD implements SVD作为其中的一部分,但我不能将SVD设置为需要TVD的东西。
这是我尝试过的:
- 将我的表链接为UIScrollView而不是UITableView。码:
@IBOutlet weak var table: UIScrollView! /* * irrelevant code * */ headerBar.behaviorDefiner = SquareCashStyleBehaviorDefiner() table.delegate = headerBar.behaviorDefiner
这导致条实际压缩,但桌子不随杆移动。它只是保持原样,留下压缩条形的白色空间。
- 可选择像实施指南中那样进行铸造。码:
@IBOutlet弱var表:UITableView!
/* * irrelevant code * */ headerBar.behaviorDefiner = SquareCashStyleBehaviorDefiner() table.delegate = headerBar.behaviorDefiner as? UITableViewDelegate
这不会施展它。当我向下滚动表格时,应用程序什么都不做。
- 强迫铸造到
UITableViewDelegate
。码: @IBOutlet弱var表:UITableView!/* * irrelevant code * */ headerBar.behaviorDefiner = SquareCashStyleBehaviorDefiner() table.delegate = headerBar.behaviorDefiner as! UITableViewDelegate
这将返回错误could not cast value of type 'UIScrollViewDelegate' to 'UITableViewDelegate'
。
我想这可能是因为我在swift中这样做,但这个错误不应该基于语言?!
我遇到了这个问题。
您需要编辑BLKDelegateSplitter.h @interface声明。替换为:
@interface BLKDelegateSplitter : NSObject <NSObject, UITableViewDelegate>
资料来源:https://github.com/bryankeller/BLKFlexibleHeightBar/issues/42
根据新的repo添加此扩展名以解决此问题。更新这对我有用。 如果您使用集合视图而不是更改委托
extension BLKFlexibleHeightBarBehaviorDefiner :UITableViewDelegate{
}
以上是关于BLKFlexibleHeightBar行为定义器不符合UITableViewDelegate的主要内容,如果未能解决你的问题,请参考以下文章
设计模式 行为型模式 -- 迭代器模式(定义结构实例优缺点分析)