• 源码-0205-02--表格数据的更新02


    //  XMGDealsViewController.m
    //  06-自定义等高cell01-storyboard
    #import "XMGDealsViewController.h"
    #import "XMGDeal.h"
    #import "XMGDealCell.h"
    
    @interface XMGDealsViewController () <UITableViewDataSource, UITableViewDelegate, UIAlertViewDelegate>
    @property (weak, nonatomic) IBOutlet UITableView *tableView;
    /** 所有的团购数据 */
    @property (nonatomic, strong) NSMutableArray *deals;
    @end
    
    @implementation XMGDealsViewController
    
    - (NSMutableArray *)deals
    {
        if (_deals == nil) {
            // 加载plist中的字典数组
            NSString *path = [[NSBundle mainBundle] pathForResource:@"deals.plist" ofType:nil];
            NSArray *dictArray = [NSArray arrayWithContentsOfFile:path];
            
            // 字典数组 -> 模型数组
            NSMutableArray *dealArray = [NSMutableArray array];
            for (NSDictionary *dict in dictArray) {
                XMGDeal *deal = [XMGDeal dealWithDict:dict];
                [dealArray addObject:deal];
            }
            
            _deals = dealArray;
        }
        return _deals;
    }
    
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        
    }
    
    - (IBAction)switchEditing {
        // 进入编辑模式
        [self.tableView setEditing:!self.tableView.isEditing animated:YES];
    }
    
    
    - (IBAction)add {
    //    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"111" message:@"2222" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"好的", nil];
    //    
    //    [alertView show];
    //    UIActionSheet *sheet;
        
        // 创建弹框控制器
        UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"请输入团购信息" message:nil preferredStyle:UIAlertControllerStyleAlert];
        
        // 添加按钮
        [alert addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil]];
        [alert addAction:[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) {
            // 创建模型
            XMGDeal *deal = [[XMGDeal alloc] init];
            deal.title = [alert.textFields[0] text];
            deal.price = [alert.textFields[1] text];
            [self.deals insertObject:deal atIndex:0];
            
            // 刷新数据
            [self.tableView reloadData];
        }]];
    //    [alert addAction:[UIAlertAction actionWithTitle:@"不知道" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
    //        NSLog(@"点击了不知道按钮");
    //    }]];
    //    [alert addAction:[UIAlertAction actionWithTitle:@"不知道2" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
    //        NSLog(@"点击了不知道2按钮");
    //    }]];
        
        // 添加文本输入框
        [alert addTextFieldWithConfigurationHandler:^(UITextField *textField) {
            textField.placeholder = @"请输入团购名字";
        }];
        [alert addTextFieldWithConfigurationHandler:^(UITextField *textField) {
            textField.placeholder = @"请输入团购价格";
        }];
        
        // 显示控制器
        [self presentViewController:alert animated:YES completion:nil];
    }
    
    - (IBAction)remove {
        // 移除模型数据
        [self.deals removeObjectAtIndex:0];
        [self.deals removeObjectAtIndex:0];
        [self.deals removeObjectAtIndex:0];
        
        // 刷新表格
        [self.tableView reloadData];
    }
    
    - (IBAction)update {
        // 修改模型
        XMGDeal *deal = self.deals[3];
        deal.price = [NSString stringWithFormat:@"%d", 50 + arc4random_uniform(100)];;
        
        // 刷新表格
        [self.tableView reloadData];
    }
    
    #pragma mark - <UIAlertViewDelegate>
    //- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
    //{
    //    NSLog(@"---%zd", buttonIndex);
    //}
    
    #pragma mark - Table view data source
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
        return self.deals.count;
    }
    
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {    // 创建cell
        XMGDealCell *cell = [XMGDealCell cellWithTableView:tableView];
        
        // 取出模型数据
        cell.deal = self.deals[indexPath.row];
        
        return cell;
    }
    
    #pragma mark - TableView代理方法
    /**
     * 只要实现这个方法,左划cell出现删除按钮的功能就有了
     * 用户提交了添加(点击了添加按钮)删除(点击了删除按钮)操作时会调用
     */
    - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
    {
        if (editingStyle == UITableViewCellEditingStyleDelete) {  // 点击了“删除”
            // 删除模型
            [self.deals removeObjectAtIndex:indexPath.row];
            
            // 刷新表格
            [self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationLeft];
        } else if (editingStyle == UITableViewCellEditingStyleInsert) { // 点击了+
            NSLog(@"+++++ %zd", indexPath.row);
        }
    }
    
    /**
     * 这个方法决定了编辑模式时,每一行的编辑类型:insert(+按钮)、delete(-按钮)
     */
    //- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
    //{
    //    return indexPath.row % 2 == 0? UITableViewCellEditingStyleInsert : UITableViewCellEditingStyleDelete;
    //}
    @end
    本人无商业用途,仅仅是学习做个笔记,特别鸣谢小马哥,学习了IOS,另日语学习内容有需要文本和音频请关注公众号:riyuxuexishuji
  • 相关阅读:
    为蓝桥杯准备
    Java里子类调用父类构造方法问题
    boost库的Singleton的实现以及static成员的初始化问题
    VS2005调试小记
    <转载>程序员每天该做的事
    vs2005, 2008 使用了未初始化的msg变量
    转载 vs2005 快捷键大全
    VS2005右键点击转到定义后出现“未定义符号”的提示及其解决
    软件工程配置规范(VC2005) 第二版(转载)
    匆忙赶路的时候别忘了适时停下来回头看看
  • 原文地址:https://www.cnblogs.com/laugh/p/6472497.html
Copyright © 2020-2023  润新知