用代碼寫靜態(tài)表格

早期第一次接觸StoryBoard的時(shí)候,就被其中一個(gè)控件吸引了,那就是靜態(tài)表格。通過可視界面瑞佩,將tableview里面的cell設(shè)置上不同的內(nèi)容和屬性,就像在添加簡單的UIView一樣簡單饲齐。不同再去一個(gè)個(gè)寫tableview的delegate钉凌、dataSource的數(shù)據(jù)源設(shè)置,方便又簡單捂人。歸結(jié)到底就是用最簡單的方式去寫UITableView御雕,拋開他的delegate。

思路整理

首先需要通過代碼的方式來實(shí)現(xiàn)滥搭,同時(shí)需要有復(fù)用功能酸纲,將delegate改用block來實(shí)現(xiàn)。簡單的插入瑟匆、刪除闽坡、修改功能都應(yīng)該有。

實(shí)現(xiàn)

思路有了愁溜,實(shí)現(xiàn)起來就簡單了疾嗅,為了更好的讓大家使用,我已經(jīng)將其push到github上冕象。大家可以通過pod方式來添加:

pod "YStaticContentTableView"

示例

添加section和cell

這個(gè)一個(gè)添加section和cell到你的UITableView上的簡單例子代承,需要把你的代碼寫在控制器的,viewDidLoad方法里渐扮。把tableView開啟靜態(tài)表格模式[self.tableView enableStaticTableView],
這里你可能需要引入頭文件YStaticContentTableView.h论悴。你可以和平時(shí)一樣配置UITableViewCell掖棉,當(dāng)然我們也提供YStaticContentTableViewCell對(duì)象來設(shè)置Cell的樣式和復(fù)用ID。

YStaticContentTableViewSection允許你來設(shè)置諸如Section標(biāo)題等膀估。

正如你看到的我們還有一個(gè)不錯(cuò)的whenSelectedblock幔亥,這允許去寫一些代碼當(dāng)我們點(diǎn)擊cell時(shí)去運(yùn)行,一個(gè)好的例子比如:push 一個(gè) UIViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self.tableView enableStaticTableView];
    
    __weak typeof(self) weakSelf = self;
    [self.tableView addSection:^(YStaticContentTableViewSection *section, NSUInteger sectionIndex) {
        [section addCell:^(YStaticContentTableViewCell *staticContentCell, UITableViewCell *cell, NSIndexPath *indexPath) {
            staticContentCell.reuseIdentifier = @"UIControlCell";
            staticContentCell.tableViewCellSubclass = [YCustomCell class];
            
            YCustomCell *customCell = (YCustomCell *)cell;
            [customCell.btn setTitle:[NSString stringWithFormat:@"cell - %zd",i] forState:UIControlStateNormal];
            [customCell.btn addTarget:weakSelf action:@selector(btnClick) forControlEvents:UIControlEventTouchUpInside];
            [customCell.btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];\
        } whenSelected:^(NSIndexPath *indexPath) {
            [[[UIAlertView alloc] initWithTitle:@"提示" message:[NSString stringWithFormat:@"click - %zd",indexPath.row] delegate:nil cancelButtonTitle:@"取消" otherButtonTitles:@"確定", nil] show];
            [weakSelf.tableView deselectRowAtIndexPath:indexPath animated:YES];
        }];
    }];
}

運(yùn)行時(shí)察纯,插入一個(gè)Cell

這個(gè)行為就像addCell:除了這些帕棉,你還可以加上是否需要?jiǎng)赢嫷脑O(shè)置

[self.tableView insertCell:^(YStaticContentTableViewCell *staticContentCell, UITableViewCell *cell, NSIndexPath *indexPath) {
    //config cell
} whenSelected:^(NSIndexPath *indexPath) {
    //TODO
} atIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:YES];

運(yùn)行時(shí),插入多個(gè)Cell

和上面一樣捐寥,除了這些我們需要把我們的代碼放在beginUpdatesendUpdates,然后保留我們所有UITableView的構(gòu)建方式笤昨,而且還是使用不錯(cuò),方便的語法握恳。

[self.tableView beginUpdates];

for (NSInteger i = 0; i < 99; i++) {
    [self.tableView insertCell:^(YStaticContentTableViewCell *staticContentCell, UITableViewCell *cell, NSIndexPath *indexPath) {
        //config cell
    } whenSelected:^(NSIndexPath *indexPath) {
        //TODO
    } atIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:YES];
}

[self.tableView endUpdates];

總結(jié)

通過這種方式實(shí)現(xiàn)UITableView,會(huì)發(fā)現(xiàn)代碼更易理解和維護(hù)了捺僻,

其它

github: https://github.com/LiZunYuan/YStaticContentTableView

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末乡洼,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子匕坯,更是在濱河造成了極大的恐慌束昵,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件葛峻,死亡現(xiàn)場離奇詭異锹雏,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)术奖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門礁遵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人采记,你說我怎么就攤上這事佣耐。” “怎么了唧龄?”我有些...
    開封第一講書人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵兼砖,是天一觀的道長。 經(jīng)常有香客問我既棺,道長讽挟,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任丸冕,我火速辦了婚禮耽梅,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘晨仑。我一直安慰自己褐墅,他們只是感情好拆檬,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著妥凳,像睡著了一般竟贯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上逝钥,一...
    開封第一講書人閱讀 49,784評(píng)論 1 290
  • 那天屑那,我揣著相機(jī)與錄音,去河邊找鬼艘款。 笑死持际,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的哗咆。 我是一名探鬼主播蜘欲,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼晌柬!你這毒婦竟也來了姥份?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤年碘,失蹤者是張志新(化名)和其女友劉穎澈歉,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體屿衅,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡埃难,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了涤久。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片涡尘。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖拴竹,靈堂內(nèi)的尸體忽然破棺而出悟衩,到底是詐尸還是另有隱情,我是刑警寧澤栓拜,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布座泳,位于F島的核電站,受9級(jí)特大地震影響幕与,放射性物質(zhì)發(fā)生泄漏挑势。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一啦鸣、第九天 我趴在偏房一處隱蔽的房頂上張望潮饱。 院中可真熱鬧,春花似錦诫给、人聲如沸香拉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽凫碌。三九已至扑毡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間盛险,已是汗流浹背瞄摊。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留苦掘,地道東北人换帜。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像鹤啡,于是被迫代替她去往敵國和親惯驼。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 概述在iOS開發(fā)中UITableView可以說是使用最廣泛的控件递瑰,我們平時(shí)使用的軟件中到處都可以看到它的影子跳座,類似...
    liudhkk閱讀 9,006評(píng)論 3 38
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件泣矛、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,059評(píng)論 4 62
  • 原來我也會(huì)膽怯您朽,會(huì)害怕失去某樣?xùn)|西亦或者是人。 滿滿的一肚子話總是堵在喉嚨處然后就沒有然后换淆,看你偶爾亮了的頭像小心...
    胡同巷子里的貓閱讀 285評(píng)論 0 0
  • 福利:如果有完整的交易系統(tǒng)想要驗(yàn)證哗总,我會(huì)選擇性的免費(fèi)代寫EA、診斷EA倍试,記得要留下聯(lián)系方式哦~ 隨著外匯行業(yè)在國內(nèi)...
    黃馬褂閱讀 564評(píng)論 0 2