关于cell中textfield值回传的问题

作者: iOS程序员asdf | 来源:发表于2017-02-22 14:28 被阅读256次

    关于cell中textField值回传有很多办法,代理啊,block啊,都可以实现。
    不过今天我给大家讲一个我自己想出来的方法。
    我写了个小demo,里面什么都没有,不过基本原理还是可以看出来的。
    代码非常简单,在viewController中只需要在返回cell的方法里面把接受这个数据的一个数组和所在的indexPath传进去就可以,代码:

    -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
        
        TextFieldCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
        cell.data = _data;
        cell.indexPath = indexPath;
        return cell;
        
    }
    

    在cell.h 中需要定义两个属性接收,

    #import <UIKit/UIKit.h>
    
    #define kIndexPath @"indexPath"
    #define kText @"text"
    
    
    @interface TextFieldCell : UITableViewCell
    
    @property (nonatomic, strong) NSMutableArray *data;
    @property (nonatomic, strong) NSIndexPath *indexPath;
    
    @end
    

    只需要在cell的textfield中改变内容的方法中这么写就可以了:

        NSMutableDictionary *dic = [NSMutableDictionary dictionary];
        [dic setValue:_indexPath forKey:kIndexPath];
        [dic setValue:textField.text forKey:kText];
        [textField endEditing:YES];
        [_data addObject:dic];
        return YES;
    

    大家注意:在view controller中传的是一个数组的地址指针。就是说如果在cell里面添加了元素,在view controller中也会添加,因为不是传过去的[_data copy],所以还是一个数组,这样就在viewController中同时变化。这样就实现了view controller和cell中数据同步的问题。
    这样写首先代码非常简洁,逻辑非常清晰,可移植性好,如果别的view controller想用这个cell那么只需要把indexPath和数据源传过去就可以了,其余的根本不用考虑。最重要的是有的时候别人想不明白指针的应用,这样你就可以装逼了。。。

    相关文章

      网友评论

      本文标题:关于cell中textfield值回传的问题

      本文链接:https://www.haomeiwen.com/subject/gccmwttx.html