昨天看到UITableView中的屬性 數組
@property(nonatomic) BOOL allowsSelection;//是否容許選中cell,默認爲YES @property(nonatomic) BOOL allowsMultipleSelection;//是否容許多個選中cell @property(nonatomic) BOOL allowsSelectionDuringEditing;//編輯狀態下,是否容許選中cell @property(nonatomic) BOOL allowsMultipleSelectionDuringEditing;//編輯狀態下,是否能多選cell這是兩組屬性
第一組表示普通狀態在,是否容許選中cell,是否容許多個選中cell 數據結構
第二組表示在編輯狀態下,是否容許選中cell,是否容許多個選中cell 函數
- (NSIndexPath *)indexPathForSelectedRow;//返回選中的path,若是是多選,則返回第一個 - (NSArray *)indexPathsForSelectedRows;//返回選擇的path,多個調用上述方法, UITableView將返回選中的cell的path,或者path的數組
可是此時只能得到一個徹底沒有選中狀態的UITableView atom
若是咱們進入到一個UITableView,想要初始狀態是部分選中,部分未選中,也就是按照咱們的數據內容來動態設置的,那麼咱們應該對UITableViewCell作相應的設置 spa
- (void)setSelected:(BOOL)selected animated:(BOOL)animated;試着調用了此函數來設置cell的選中狀態.
可是卻沒有效果,並且有時候被調用的cell背景會變得有點奇怪..... 調試
調試發現,若是單純的調用此函數,咱們只是把cell的狀態修改了,可是UITableView保存的狀態沒有修改. code
UITableView會在cell建立完成後統一調用一次setSelected::函數設置cell的狀態. ip
如此的話,那咱們在cell裏面修改cell狀態的方式就不對了. it
查看UITableView的API,發現此函數 io
- (void)selectRowAtIndexPath:(NSIndexPath *)indexPath animated:(BOOL)animated scrollPosition:(UITableViewScrollPosition)scrollPosition;設置UITableView中cell的選中
在UITableViewCell建立完成以後調用此函數
如viewDidLoad:中,就能夠將相應的cell設置成選中狀態
到此,咱們就能夠使用UITableView中現有的數據結構來保存Cell的選中狀態了
PS:reloadData或者進出編輯模式都會清除選中狀態