iOS - UITableView 单选功能实现
2016-08-26 17:12
417 查看
#import <UIKit/UIKit.h> @interface TestCell : UITableViewCell @property(nonatomic,copy)NSString *content; /** * 标记行是否被选中 */ @property(nonatomic,assign)BOOL isChecked; @end #import "TestCell.h" @interface TestCell() @property (weak, nonatomic) IBOutlet UIImageView *mark_ImageView; @property (weak, nonatomic) IBOutlet UILabel *firstLabel; @end @implementation TestCell - (void)awakeFromNib { self.mark_ImageView.hidden = YES; } - (void)setSelected:(BOOL)selected animated:(BOOL)animated { [super setSelected:selected animated:animated]; } -(void)setContent:(NSString *)content { if (_content!=content) { _firstLabel.text=content; } } /** * 这里只是用到了一张图所以通过来imageview的hidden来显示是否选中 * * @param isChecked */ - (void)setIsChecked:(BOOL)isChecked { _isChecked = isChecked; //选中 if (_isChecked) { self.mark_ImageView.hidden = NO; self.mark_ImageView.image = [UIImage imageNamed:@"mark_select"]; } else { self.mark_ImageView.hidden = YES; } } @end #import "ViewController.h" #import "TestCell.h" @interface ViewController ()<UITableViewDataSource,UITableViewDelegate> { NSIndexPath *selectIndexPath; } @property(nonatomic,strong)NSMutableArray *dataArray; /** * 保存选中行的对应的数据 */ @property(nonatomic,strong)NSMutableArray *markArray; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; for (NSInteger i=0; i<20; i++) { [self.dataArray addObject:[NSString stringWithFormat:@"选中第%ld行",i]]; } } - (NSMutableArray *)dataArray{ if (!_dataArray) { _dataArray =[NSMutableArray array]; } return _dataArray; } - (NSMutableArray *)markArray{ if (!_markArray) { _markArray =[NSMutableArray array]; } return _markArray; } -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return self.dataArray.count; } static NSString *cellIdentifier = @"TestCell"; -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { TestCell *cell=[tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath]; cell.content= self.dataArray[indexPath.row]; if (selectIndexPath==indexPath) { cell.isChecked = YES; } else{ cell.isChecked = NO; } return cell; } -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return 44.0f; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { //未选中 TestCell *noCheckedCell = (TestCell *)[tableView cellForRowAtIndexPath:selectIndexPath]; noCheckedCell.isChecked = NO; selectIndexPath = indexPath; //选中 TestCell *checkedCell = (TestCell *)[tableView cellForRowAtIndexPath:indexPath]; checkedCell.isChecked = YES; [tableView deselectRowAtIndexPath:indexPath animated:YES]; //刷新指定的行 NSIndexPath *indexPath_Row=[NSIndexPath indexPathForRow:indexPath.row inSection:0]; [tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath_Row,nil] withRowAnimation:UITableViewRowAnimationNone]; NSString *checkString = self.dataArray[indexPath.row]; if ([self.markArray containsObject:checkString]) { [self.markArray removeObject:checkString]; } else{ [self.markArray removeAllObjects]; [self.markArray addObject:checkString]; } NSLog(@"self.checkArray =%@",self.markArray); }
相关文章推荐
- android studio build.gradle说明
- ligerui grid 设置某一行高度
- request.getSession(false)到底返回什么
- Android UI设计之RecyclerView
- 远程调用服务(RPC)和消息队列(Message Queue)对比及其适用/不适用场合分析
- 在Ueditor 1.4.3中自定义插件
- 初识Message Queue之--基础篇
- require js之define 函数
- android:UI设计
- 优化UITableView性能
- selenium之 关闭窗口close与quit
- iOS中UITextField的字数限制
- iOS - UITableView 多选功能实现
- ui-router与ngRoute
- JSF中使用UEditor
- mvn clean install -Dmaven.test.skip=true -U
- 8.正交匹配跟踪 Orthogonal Matching Pursuit (OMP)s
- java中标签的使用(附带break和continue)
- Ueditor指定用br做换行标签
- Top K Frequent Elements