iOS TableView資料繫結的原則

2022-04-28 23:54:16 字數 2480 閱讀 2634

資料繫結的原則

如果你在寫表檢視控制器的子類**,大部分**都在

uitableviewdelegte

和 uitableview-datasource 方法中。我們將注意力聚焦在如何編寫簡潔的方法**來解決問題上。cellforrowatindexpath 方法中經常會有為每乙個表單元的特定 ui 元素設定值的**。為表單元中 ui 元素設定

值的最佳方法是將**移到別處。現在應該將它移到**呢?這要看你使用的是哪一類自定義表單

元。根據你應用要做到的功能,表檢視需要與相關的資料建立聯絡。

這種技術通常稱為

資料繫結

(data binding

),在

ios

中並不怎麼被重視,至少與

mac

比較起來是

這樣。繫結資料的最好辦法是將你的資料模型物件傳遞到自定義的表檢視單元並讓其繫結資料。

我們根據關聯資料的方式將表檢視單元分為三種型別。第一類是

uitableviewcell

的子類,它

是用來顯示特定型別資料的自定義表單元,一般情況下都與應用的特定資訊繫結。

rss

閱讀器中展示

推送資訊的

feedcell

就是乙個例子。

第二類的作用與蘋果公司的

uitableviewcell

實現類似。你建立指定樣式的表單元,這些表單

元可以在其他類或工程中用來顯示多種型別的資料模型。舉個例子,你可以建立像

mytableviewswitchcell

這種可以顯示標題文字、

uiswitch

開關,或像

mytableviewinputcell

這種可以顯示標題文字以及顯示資料項

uitextfield

文字框的通用類。

第三類表單元就是

uikit

框架提供的原生

uitableviewcell

。無論是哪一種型別,都要盡量把

資料繫結**移到表單元自身中。

下面是第一類的情況,它簡單而直觀。在

feedcell

中編寫接收模型物件(作為引數)的方法

並設定

feed

模型物件的值給特定

ui 元素。也就是說,將你的資料繫結**移到(

uitableviewcell

的子類)

feedcell

中。比方說,在

rss

閱讀器應用中,

feedcell

公用方法看起來應該像下面

這樣:feedcell

中的繫結方法

-(void) bind:(feed*) feedtobedisplayed

我們並不在檢視控制器資料來源方法

cellforrowatindexpath

中寫**,而是將其移到了

uitableviewcell

的子類中。這意味著如果之後需要修改表單元的格式(比如要給

feed

模型物件和

feedcell

新增作者名資訊時),你便可以在那裡(乙個地方)執行操作了。

如果你使用系統預設的

uitableviewcell

來顯示資料,我推薦把這個繫結方法新增到

uitable-

viewcell

的分類類(

category class

)上。第二種情況,你擁有多個使用同一

uitableviewcell

表單元的模型。我建議建立多個分類類,

每個模型乙個;舉個例子,建立

uitableviewcell+feed.h/m

檔案以顯示推送資訊,或是建立

uitableview-

cell+subscription.h/m

檔案以在同一表單元上顯示訂閱資訊。給繫結方法命名的時候需要小心謹慎。如

果分類包含乙個重複的方法名稱,它將會覆蓋前面定義的方法,這種重寫的發生是沒有定義順序的。

我建議用

bind

這樣的方式給它們命名,這樣更易讀和易於理解。比如說像

bindfeed(feed*)

和 bindsubscription:(subscription*)

這樣的命名約定。

第三類情況,你擁有乙個像

mytableviewswitchcell

這樣的通用自定義表單元。在這種情況

下,你也可以使用之前所說的技術。為通用自定義表檢視單元新增分類方法。

通常,你可能會在多個表和多個檢視控制器內重複使用同樣的

feedcell

單元格。將與資料繫結

相關的**移出表檢視控制器(或其他任意通用的檢視控制器)可以減少控制器內的**混亂情況並

簡化**維護工作。 

jspersonft有關Table資料繫結(一)

一 前言 在公司來就學著做報表,覺得這個報表學著還是很有意義的。jspersonft我在網上搜了一些有關的資料但是不是很多,現在就是學一點就記載一點。好記性不如爛筆頭嘛!二 在jspersonft定義style樣式,邊框變 黑 加粗 幾個屬性除錯如下 pdf encoding unigb ucs2 ...

iOS TableView實現下拉重新整理資料

1.建立重新整理控制項,可通過xib或 方式建立控制項 void setupdownrefresh 2.將新資料載入到原資料的前面 插入資料前面 self.data insertobject knewdata atindex 0 3.重新整理 並結束重新整理狀態 重新整理tableview self...

iOS TableView實現下拉重新整理資料

1.建立重新整理控制項,可通過xib或 方式建立控制項 void setupdownrefresh 2.將新資料載入到原資料的前面 插入資料前面 self.data insertobject knewdata atindex 0 3.重新整理 並結束重新整理狀態 重新整理tableview self...