2015-05-03 105 views
2

我需要你的建議。更新uitableview數據源並更新tabbar

我有一個帶有表格視圖的屏幕,我爲UITableViewDataSource使用了一個單獨的文件。 我需要的是能夠訪問UITabBarItem在我的UITableViewDataSource(因爲根據我的tableview的動作,我會更新我的tableview數據,所以我需要改變某些事情對我的TabBar)

任何想法?

謝謝。

要分開我的數據源,在我的控制,我有:

var toPayDatasource: MyDataSource! 
.... 
     tableView.dataSource = mDatasource 
     tableView.delegate = myDatasource 

我的數據源:

class MyDataSource: NSObject, UITableViewDataSource, UITableViewDelegate { 
... 
} 

C.C.

+1

是否有必要將您的數據源與視圖控制器分開? –

+0

你想讓數據源改變'UITabBarItem'嗎?我理解正確嗎? – Gasim

+0

@Bojan:我更喜歡將我的數據源分開,使我的代碼更清晰,更易於閱讀 –

回答

1

在兩個相距甚遠的對象之間發送消息的一種常見機制是使用NSNotificationCenter。您可以定義一個自定義事件並傳遞任何您需要更新userInfo字典中的標籤欄項目。

+0

我確實知道NotificationCenter。我已經看過它,而且非常好。我會用它。謝謝。 –

0

由於您的數據源是分開的,您可以爲視圖控制器創建一個委託並將其傳遞給數據源。類似下面的(設置爲的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個點。在移動設備上輸入代碼很煩人。