您的位置:时时app平台注册网站 > 彩世界网址 > UITableViewCell ---和--- UICollectionViewCell 自定制供给

UITableViewCell ---和--- UICollectionViewCell 自定制供给

2019-12-06 10:55

希望本文所述对大家的javascript程序设计有所帮助。

要如何实现tableView的多选呢下面我总结了一下,只需要实现四个方法就能实现cell的多选模式
首先tableView的必须实现的协议方法不包含在四个方法里面,其中一个是UIViewcontroller里的方法,并不是协议方法.但是执行此方法会有一个bug,当你提交两种style时(在第二个实现方法中)不能实现滑动删除.
其中第一个方法是UIViewcontroller的方法 设置可编辑模式

方法一:利用XIB 方法, 实现注册cell
// _membersCollectionView 是一个 UICollectionView 
[_membersCollectionView registerNib:[UINib nibWithNibName:@"自定制Cell 的文件名" bundle:nil] forCellReuseIdentifier:@"复用 ID"];

本文实例讲述了js实现键盘上下左右键选择文字并显示在文本框的方法。分享给大家供大家参考。具体实现方法如下:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    if (self.editing) {
       [_selectedIndexArray addObject:indexPath];  // add indexPath to array 
       [_selectedArray addObject:_array[indexPath.row]];// add component to array
    }
}
方法一:利用XIB 方法, 实现注册cell
[_tableView registerNib:[UINib nibWithNibName:@"自定制Cell 的文件名" bundle:nil] forCellReuseIdentifier:@"复用 ID"];
SimulateUpDownKeySelect.html#divSelect {border:1px solid red; width:208px !important;width:210px;}#divSelect ul {width:200px;margin:3px; margin-left:-35px;*margin-left:3px;overflow:hidden}#divSelect ul li {float:left; list-style-type:none;width:45px;height:14px;line-height:20px;font:14px arial;text-align:center;padding:2px}#divSelect li:hover {background :green;cursor:pointer}#txtInput {width:205px;}  <!--function ${ return document.getElementById;}function clearSelectedOptBgColor{ if (target.seletedIndex >= 0) target.options[target.seletedIndex].style.background = "";}function setSelectedOptBgColor{ target.options[target.seletedIndex].style.background = "green";}var upKeyCode = 38;var downKeyCode = 40;var enterKeyCode = 13;var oInput = $;oInput.options = $.getElementsByTagName;oInput.seletedIndex = -1;oInput.focus();//oInput.onKeyPress{}oInput.onkeyup = function{ if  event = window.event; switch  { case 37: clearSelectedOptBgColor; this.seletedIndex--; if (this.seletedIndex < 0) this.seletedIndex = this.options.length - 1; this.value = this.options[this.seletedIndex].innerHTML; setSelectedOptBgColor; break; case 38: clearSelectedOptBgColor; this.seletedIndex= this.seletedIndex-4; if (this.seletedIndex < 0) this.seletedIndex = this.options.length - 1; this.value = this.options[this.seletedIndex].innerHTML; setSelectedOptBgColor; break; case 39: clearSelectedOptBgColor; this.seletedIndex  ; if (this.seletedIndex >= this.options.length) this.seletedIndex = 0; this.value = this.options[this.seletedIndex].innerHTML; setSelectedOptBgColor; break; case 40: clearSelectedOptBgColor; this.seletedIndex= this.seletedIndex 4; if (this.seletedIndex >= this.options.length) this.seletedIndex = 0; this.value = this.options[this.seletedIndex].innerHTML; setSelectedOptBgColor; break; case enterKeyCode: this.value = this.options[this.seletedIndex].innerHTML; //alert break; }};oInput.onblur = function(){ clearSelectedOptBgColor; this.seletedIndex = 1;};//-->

另外怎样实现单个cell的多功能呢,下面的方法能够解决此问题

UITableViewCell实现注册方法

第三个实现方法UITableViewdelegate 方法功能是选中

UICollectionViewCell 使用讲解

同样,UICollectionViewCell 的自定制也有两个方法.( 一 )利用XIB拖拽控件来实现自定制的目的.必须使用方法一 实现注册Cell;(二)利用自己编写代码, 利用Masonry 等第三方,来实现自动布局,必须使用方法二 实现注册Cell.

第四个实现方法是UITableViewdelegate 方法是取消

UITableView 的Cell 有两个注册方式: ( 一 ) 利用XIB拖拽控件来实现自定制的目的.必须使用方法一 实现注册Cell;(二)利用自己编写代码, 利用Masonry 等第三方,来实现自动布局,必须使用方法二 实现注册Cell.

第二个实现方法UITableViewdelegate 返回style

UICollectionViewCell实现注册方法

- (nullable NSArray<UITableViewRowAction *> *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath {    
    UITableViewRowAction *rowAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:@"删除" handler:^(UITableViewRowAction * _Nonnull action, NSIndexPath * _Nonnull indexPath) {
        [_nameArr removeObjectAtIndex:indexPath.row];
        [_tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationLeft];
    }];
    return @[rowAction];  // can add more rowAction to complete other operation
}
方法二: 纯代码 实现注册cell
// _membersCollectionView 是一个 UICollectionView 
[_membersCollectionView registerClass:[纯代码编写cell 的类名 class] forCellReuseIdentifier:@"复用 ID"];
/*
// 例如: 
//MemberCell 是一个自己定义的 UICollectionViewCell
[_membersCollectionView registerClass:[MemberCell class] forCellWithReuseIdentifier:@"MemberCell"];
*/

针对第二种方法实现的定制cell的功能, 需要注意, 必须实现

- (instancetype)initWithFrame:(CGRect)frame{
    self = [super initWithFrame:frame];
    if (self) {
        /*
          需要在这里编写代码,实现自定制的功能.为了方便维护, 我写成一个一个函数, 在这里调用.
        */
        [self createUI]; // 创建 UI 界面 (使用 Masonry 实现自动布局)
    } 
    return self;
}
- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath {
    if (self.editing) {
        [_selectedArray removeObject:_array[indexPath.row]]; // delete selected component
        [_selectedIndexArray removeObject:indexPath]; // delete selected indexPath
    }
}
方法二: 纯代码 实现注册cell
[_tableView registerClass:[纯代码编写cell 的类名 class] forCellReuseIdentifier:@"复用 ID"];
/*
// 例如: 
// CommonCell 是一个自定制的 UITableViewCell
[_tableView registerClass:[CommonCell class] forCellReuseIdentifier:@"CommonCell"];
*/

针对第二种方法实现的定制cell的功能, 需要注意, 必须实现

- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        /*
          需要在这里编写代码,实现自定制的功能.为了方便维护, 我写成一个一个函数, 在这里调用.
        */
        [self createUI]; // 创建 UI 界面 (使用 Masonry 实现自动布局)
    }
    return self;
}
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
   // selected deleteStyle and insertStyle at the same time 
    return UITableViewCellEditingStyleDelete | UITableViewCellEditingStyleInsert;
}
- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
    [super setEditing:editing animated:animated];
    [_tableView setEditing:editing animated:animated];
    if (editing) {
    // no done
    } else {
    // delete selected array   
    [array removeObjectsInArray:_selectedArray]; // selected component added array
   [_tableView deleteRowsAtIndexPaths:_selectedIndexArray  withRowAnimation:UITableViewRowAnimationLeft]; // selected indexPath added array
       [_selectedIndexArray removeAllObjects];  // empty array component
       [_selectedArray removeAllObjects];   // empty array component
    }
}

本文由时时app平台注册网站发布于彩世界网址,转载请注明出处:UITableViewCell ---和--- UICollectionViewCell 自定制供给

关键词: