更新 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

需要在 swift 4 中设计自定义标签栏。 - 更新

更新 UITableView 中的 UIImage

UITableView 单元格不会快速更新

当我更改行数时,具有 rowHeight UITableViewAutomaticDImension 的 UITableView 不会更新

UITableView:向上滑动时收缩标签栏和导航栏