更新 uitableview 数据源和更新标签栏
Posted
技术标签:
【中文标题】更新 uitableview 数据源和更新标签栏【英文标题】:Updating uitableview datasource and updating tabbar 【发布时间】:2015-05-03 18:31:54 【问题描述】:我需要你的建议。
我有一个带有表格视图的屏幕,我正在为UITableViewDataSource
使用单独的文件。
我需要的是能够访问我的UITableViewDataSource
中的UITabBarItem
(因为基于我的tableview 上的操作,我将更新我的tableview 数据,所以我需要在我的标签栏上进行一些更改)
有什么想法吗?
谢谢。
为了分离我的数据源,在我的控制器中我有:
var toPayDatasource: MyDataSource!
....
tableView.dataSource = mDatasource
tableView.delegate = myDatasource
还有我的数据源:
class MyDataSource: NSObject, UITableViewDataSource, UITableViewDelegate
...
C.C.
【问题讨论】:
是否需要将数据源与视图控制器分开? 数据源是否要更改UITabBarItem
?我理解正确吗?
@Bojan:我更喜欢将我的数据源分开以使我的代码更清晰,更易于阅读
@Gasim:是的,没错。
@CC。您是否使用extension
来分隔数据源?
【参考方案1】:
在两个相距很远的对象之间发送消息的一种常见机制是使用NSNotificationCenter
。您可以定义自定义事件并传递您需要更新userInfo
字典中的标签栏项目的任何内容。
【讨论】:
我确实知道 NotificationCenter。我看过了,还不错。我会用它。谢谢。【参考方案2】:由于您的数据源是独立的,您可以为视图控制器创建一个委托并将其传递给数据源。类似于以下内容(在为 tableView 设置数据源之后):
mDataSource.tabDelegate = self;
并通过以下方式声明/定义委托:
// protocol
protocol TabChangerProtocol
// function signatures here
// data source
class MyDataSource : /* ... */
var tabDelegate : TabChangerProtocol!;
// rest here
// view controller
class ViewController : TabChangerProtocol, /* ... */
// ...
这样您就可以从 MyDataSource 内部调用协议函数。
P.S 对不起所有 3 个点。在手机上输入代码很烦人。
【讨论】:
以上是关于更新 uitableview 数据源和更新标签栏的主要内容,如果未能解决你的问题,请参考以下文章
在 UICollectionViewCell 中更新 UITableView
当我更改行数时,具有 rowHeight UITableViewAutomaticDImension 的 UITableView 不会更新