zoukankan      html  css  js  c++  java
  • 使用系统自带的 UIRefreshControl 实现下拉刷新

    UIRefreshControl 为 UITableViewController 中的一个属性,从以下可以看出, IOS6.0 以上才支持.

    @property (nonatomic,retain) UIRefreshControl *refreshControl NS_AVAILABLE_IOS(6_0);


    RootViewController.h

    //  Copyright (c) 2014年 YouXian. All rights reserved.
    //
    
    #import <UIKit/UIKit.h>
    
    @interface RootViewController : UITableViewController
    
    @end

    RootViewController.m

    //  Copyright (c) 2014年 YouXian. All rights reserved.
    //
    
    #import "RootViewController.h"
    
    @interface RootViewController ()
    
    @property (nonatomic) NSMutableArray *data;
    
    @end
    
    @implementation RootViewController
    
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        
        //初始化数据源
        _data = [[NSMutableArray alloc] init];
    
        //初始化refreshControl
        self.refreshControl = [[UIRefreshControl alloc] init];
        self.refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"下拉刷新"];
        [self.refreshControl addTarget:self
                                action:@selector(RefreshViewControlEventValueChanged)
                      forControlEvents:UIControlEventValueChanged];
    }
    
    - (void)RefreshViewControlEventValueChanged
    {
        [self performSelector:@selector(getDataAndStopRefresh)
                   withObject:nil
                   afterDelay:2];
    }
    
    - (void)getDataAndStopRefresh
    {
        //处理数据
        for (int i = 0; i <= arc4random() % 4; i++)
        {
            [_data addObject:[NSString stringWithFormat:@"%@", [NSDate date].description]];
        }
    
        //结束刷新(重要,只有先处理完了数据源,再执行方法 endRefreshing 让tableView回去)
        [self.refreshControl endRefreshing];
        
        //重新加载
        [self.tableView reloadData];
    }
    
    #pragma mark - Table view data source
    
    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
    {
        return 1;
    }
    
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
        return _data.count;
    }
    
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        static NSString *CellIdentifier = @"Cell";
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        
        if (cell == nil)
        {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
                                          reuseIdentifier:CellIdentifier];
        }
        
        cell.textLabel.text = [NSString stringWithFormat:@"%@", _data[indexPath.row]];
        
        return cell;
    }
    
    @end

    在下拉刷新后,只有执行了方法 [self.refreshControl endRefreshing]; 才能够恢复,简单易用,不过需要在执行这个方法之前处理好一切的数据.

  • 相关阅读:
    10. Regular Expression Matching
    9. Palindrome Number
    6. ZigZag Conversion
    5. Longest Palindromic Substring
    4. Median of Two Sorted Arrays
    3. Longest Substring Without Repeating Characters
    2. Add Two Numbers
    链式表的按序号查找
    可持久化线段树——区间更新hdu4348
    主席树——树链上第k大spoj COT
  • 原文地址:https://www.cnblogs.com/YouXianMing/p/3584113.html
Copyright © 2011-2022 走看看