成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

iOS可折疊的tableView的簡單實現

移動開發 iOS
漫漫編程路,剛接觸iOS編程的你做好準備了么。凡事從無到有,由簡至繁,需要努力和堅韌,那么從最簡單的積累開始吧。

這里所說的 tableView 折疊,是借助 insert (insertRowsAtIndexPaths:withRowAnimation:) 和 delete (deleteRowsAtIndexPaths:withRowAnimation:) 對tableView 的 section 進行折疊,效果簡單。

我是初學者,還請各位看官指教。

搞這個東西,斷斷續續了幾天,現在終于可以告一段落了,雖然離可重用還有距離,但是我想以經不遠了。

遇到的幾個問題:

1.NSMutableDictionary

NSMutableDictionary 內的順序并不是執行 setObjectForKey 的順序,順序是亂的(目測是亂的,不知道是不是有什么規律,請指教)。

我在這個東西上繞了一個大圈子。后來在 AppCode  下面調試,才發現這個問題。為保持插入順序,不得不換成兩個 NSMutableArray ,一個存 Key,一個存 Value.

2.headerViewForSection

我想在 numberOfRowsInSection 方法內獲取該 section 的 header View ,然后讀取自定義的數據,比如當前狀態是否是折疊等。

查了一下API,發現有個 headerViewForSection 方法,但是無論如何,它的值一直都是nil,搞不明白。stackoverflow 上有說須要在使用之前用 tableView 的 registerNib:forHeaderFooterViewReuseIdentifier:  或 registerClass:forHeaderFooterViewReuseIdentifier:  方 法,我試了,沒用。

3.insertRowsAtIndexPaths 和 deleteRowsAtIndexPaths 同 numberOfRowsInSection 的關系

如果不處理好這個關系,大概所有的問題都是這樣的:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid update: invalid number of rows in section 6. The number of rows contained in an existing section after the update (0) must be equal to the number of rows contained in that section before the update (9), plus or minus the number of rows inserted or deleted from that section (0 inserted, 3 deleted) and plus or minus the number of rows moved into or out of that section (0 moved in, 0 moved out).'

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'attempt to delete row 2 from section 4 which only contains 0 rows before the update'

大楖是說,numberOfRowsInSection 返回的數字和 insert / delete 后,section 所包含的行數不一致。

在 tableView 的 endUpdates 方法之前,應該對標志變量做處理。endUpdates 后,會重新刷新 tableView ,numberOfRowsInSection 會重新被調用。

不理想的地方(壞代碼)

同上面講的1和2 ,由于 NSMutableDictionary 的無順序,我將 MutableDictionary 換成了 MutableArray 。

由于無法獲取指定 section 的 headerView ,所以,我只能將以經生成的 headerView 記錄到某個 MutableArray 內,以供使用。

用 xib 設計自定義的 UIView

在新建 Objective-C Class 的時候,只有基類是 UIViewController 的,才能選“With XIB for user interface” 這個選項。

如果我想自定義一個 UIView , 這個 view 內的控件很多,想想就是一件可怕的事情。還好,可以單獨新建一個 xib 文件。

a, 拖一個UIView 到 xib 編輯器中,然后更發這個 view 的size 為 Freeform, 這個 view 就可以自由的改變大小了。

b,更改 class 為自定義的 UIView 

c, File's Owner 的 class 還是 NSObject ,不要改。

d, 如何使用這個自定義的 UIView ?

***,上個效果圖吧

責任編輯:閆佳明 來源: cnblogs
相關推薦

2018-04-26 10:43:28

2022-03-02 09:53:51

微軟FlutterEngine PR

2019-03-20 14:26:56

蘋果折疊屏iPhone X Fo

2021-12-01 17:42:42

微信macOS騰訊

2015-12-29 10:20:40

谷歌眼鏡企業

2019-03-15 16:18:41

谷歌可折疊手機

2022-12-29 08:16:46

2019-05-08 15:21:30

谷歌折疊屏智能手機

2019-10-12 17:19:12

WindowsWindows 7Windows 10

2021-08-15 22:58:43

手機折疊手機三星

2022-07-12 06:05:27

NutUI折疊面板組件開發

2014-03-12 10:19:54

iOS對象

2012-05-17 12:38:43

iOS

2013-07-05 10:26:40

Android

2013-06-14 13:50:28

iOS開發移動開發警告視圖
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本精品免费在线观看 | 成人av播放 | 一区二区三区欧美 | 91社区在线观看播放 | 欧美综合一区二区三区 | 成人精品久久 | 一级高清 | 免费永久av | 狠狠狠色丁香婷婷综合久久五月 | 国产精品美女www爽爽爽视频 | 国产a视频 | 久久成人av电影 | 亚洲在线免费 | 久久久99国产精品免费 | 少妇精品亚洲一区二区成人 | 一区二区三区视频 | 欧美日一区二区 | 午夜成人免费视频 | 亚洲综合日韩精品欧美综合区 | 国产精品久久久久久久 | 午夜影视大全 | 亚洲精品一区中文字幕乱码 | 欧美日韩专区 | 亚洲 欧美 日韩 精品 | 久久国产精品99久久久大便 | 欧洲精品久久久久毛片完整版 | 青青草原综合久久大伊人精品 | 国产精品自拍视频网站 | 日韩不卡在线观看 | 国产黄色网 | 在线国产一区 | 亚洲精品一区二区在线 | 天啪| 国产精品一区在线观看 | 久久精品亚洲成在人线av网址 | 性色综合 | 黄视频网址 | 日韩精品一区二区三区第95 | 日本天天色 | 国产在线精品一区 | 国产欧美日韩一区 |