swift 界面返回后刷新界面 - CSDN
  • view B tableview中的cell,点击push到了view A。view A pop回来的时候,我想reload view B中的tableview 在B视图 -(void)viewDidAppear:(BOOL)animated{} 这个方法里面重新[self....要注意 刷新数据 不然没有效果

      view B tableview中的cell,点击后push到了view A。view A pop回来的时候,我想reload view B中的tableview

    在B视图

    -(void)viewDidAppear:(BOOL)animated{} 这个方法里面重新[self.tableview reloadData];

    要注意 刷新数据   不然没有效果

    展开全文
  • 使用OC和swift创建系统自带的刷新界面 一:swift刷新界面代码: import UIKitclass ViewController: UITableViewController { // 用于显示的数据源 var _dataSource:[String] = [] // 加载更多 状态 风火轮 var ...

    使用OC和swift创建系统自带的刷新界面

     

    一:swift刷新界面代码:

    import UIKit

    class ViewController: UITableViewController {

        // 用于显示的数据源
        var _dataSource:[String] = []
        
        // 加载更多 状态 风火轮
        var _aiv:UIActivityIndicatorView!
        
        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view, typically from a nib.
            
            // 数据源中的基础数据
            for i in 0...2 {
                
                _dataSource.append("\(i)")
            }
            
            // 初始下拉刷新控件
            self.refreshControl = UIRefreshControl()
            self.refreshControl?.attributedTitle = NSAttributedString(string: "Pull To Refresh")
            self.refreshControl?.tintColor = UIColor.greenColor()
            self.refreshControl?.addTarget(self, action: "refresh", forControlEvents: .ValueChanged)
            
            // 加载更多按扭的背景视图
            var tableFooterView:UIView = UIView()
            tableFooterView.frame = CGRectMake(0, 0, self.view.bounds.size.width, 44)
            tableFooterView.backgroundColor = UIColor.greenColor()
            self.tableView.tableFooterView = tableFooterView

            // 加载更多的按扭
            let loadMoreBtn = UIButton()
            loadMoreBtn.frame = CGRectMake(0, 0, self.view.bounds.width, 44)
            loadMoreBtn.setTitle("Load More", forState: .Normal)
            loadMoreBtn.setTitleColor(UIColor.lightGrayColor(), forState: .Normal)
            loadMoreBtn.addTarget(self, action: "loadMore:", forControlEvents: .TouchUpInside)
            tableFooterView.addSubview(loadMoreBtn)
            
            // 加载更多 状态 风火轮
            _aiv = UIActivityIndicatorView(activityIndicatorStyle: .Gray)
            _aiv.center = loadMoreBtn.center
            tableFooterView.addSubview(_aiv)
        }
        
        // 加载更多方法
        func loadMore(sender:UIButton) {
            
            sender.hidden = true
            _aiv.startAnimating()
            
            dispatch_async(dispatch_get_global_queue(0, 0), { () -> Void in
                
                self._dataSource.append("\(self._dataSource[self._dataSource.count-1].toInt()! + 1)")
                
                dispatch_async(dispatch_get_main_queue(), { () -> Void in
                    
                    sleep(1)
                    
                    self._aiv.stopAnimating()
                    sender.hidden = false

                    self.tableView.reloadData()
                })
            })
        }
        
        // 下拉刷新方法
        func refresh() {
            
            if self.refreshControl?.refreshing == true {
                
                self.refreshControl?.attributedTitle = NSAttributedString(string: "Loading...")
            }
            
            dispatch_async(dispatch_get_global_queue(0, 0), { () -> Void in
                
                self._dataSource.insert("\(self._dataSource[0].toInt()! - 1)", atIndex: 0)
                
                dispatch_async(dispatch_get_main_queue(), { () -> Void in
                    
                    sleep(1)
                    
                    self.refreshControl?.endRefreshing()
                    self.refreshControl?.attributedTitle = NSAttributedString(string: "Pull To Refresh")

                    self.tableView.reloadData()
                })
            })
        }
        
        // tableView dataSource
        override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
            
            return _dataSource.count
        }
        
        override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
            
            let identifier = "cell"
            
            var cell = tableView .dequeueReusableCellWithIdentifier(identifier) as? UITableViewCell
            
            if cell == nil {
                
                cell = UITableViewCell(style: .Default, reuseIdentifier: identifier)
            }
            
            cell?.textLabel?.text = "\(_dataSource[indexPath.row])"
            
            return cell!
        }
    }

     

    二:OC刷新界面代码:

    #import "ViewController.h"

    @interface ViewController ()
    {
        // 数据源
        NSMutableArray * _dataSource;
        
        // 风火轮
        UIActivityIndicatorView * _aiv;
    }

    @end

    @implementation ViewController

    - (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
    {
        return self;
    }

    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
        
        // 初始数据源
        _dataSource = [[NSMutableArray alloc] init];
        
        // 基础数据
        for (int i=0; i<3; i++) {
            
            [_dataSource addObject:[NSString stringWithFormat:@"%d",i]];
        }
        
        // 刷新控件
        self.refreshControl = [[UIRefreshControl alloc] init];
        self.refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"Pull To Refresh"];
        self.refreshControl.tintColor = [UIColor greenColor];
        [self.refreshControl addTarget:self action:@selector(refresh) forControlEvents:UIControlEventValueChanged];

        // 背景视图
        UIView * tableFooterView = [[UIView alloc] init];
        tableFooterView.frame = CGRectMake(0, 0, self.view.bounds.size.width, 44);
        tableFooterView.backgroundColor = [UIColor greenColor];
        self.tableView.tableFooterView = tableFooterView;
        
        // 加载更多按扭
        UIButton * loadMoreBtn = [[UIButton alloc] init];
        loadMoreBtn.frame = CGRectMake(0, 0, self.view.bounds.size.width, 44);
        [loadMoreBtn setTitle:@"Load More" forState:UIControlStateNormal];
        [loadMoreBtn setTitleColor:[UIColor lightGrayColor] forState:UIControlStateNormal];
        [loadMoreBtn addTarget:self action:@selector(loadMore:) forControlEvents:UIControlEventTouchUpInside];
        [tableFooterView addSubview:loadMoreBtn];

        // 风火轮
        _aiv = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
        _aiv.center = loadMoreBtn.center;
        [tableFooterView addSubview:_aiv];
    }

    // 加载更多方法
    - (void)loadMore:(UIButton *)sender
    {
        sender.hidden = YES;
        [_aiv startAnimating];
        
        dispatch_async(dispatch_get_global_queue(0, 0), ^{
           
            [_dataSource addObject: [NSString stringWithFormat:@"%d", [_dataSource[_dataSource.count-1] intValue] + 1]];
            
            dispatch_async(dispatch_get_main_queue(), ^{
                
                sleep(1);
                
                [_aiv stopAnimating];
                sender.hidden = NO;
                
                [self.tableView reloadData];
            });
        });
    }

    // 下拉刷新方法
    - (void)refresh {
        
        if (self.refreshControl.refreshing) {
            
            self.refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"Loading..."];
        }

        dispatch_async(dispatch_get_global_queue(0, 0), ^{
            
        [_dataSource insertObject:[NSString stringWithFormat:@"%d", [_dataSource[0] intValue] -1] atIndex:0];
            
            dispatch_async(dispatch_get_main_queue(), ^{
                
                sleep(1);
                
                [self.refreshControl endRefreshing];
                self.refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"Pull To Refresh"];
                
                [self.tableView reloadData];
            });
        });
    }

    // tableView dataSource
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

        return _dataSource.count;
    }

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
        
        static NSString * identifier = @"cell";
        
        UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:identifier];
        
        if (cell == nil) {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
        }
        
        cell.textLabel.text = _dataSource[indexPath.row];
        
        return cell;
    }

    @end

    转载于:https://www.cnblogs.com/ITmgc/p/4462665.html

    展开全文
  • 可以一行代码完成tableview空数据时的占位界面,自动刷新功能
  • Swift 写一个简单界面

    2016-08-15 15:29:26
    在这篇博文中你可以看到那些内容呢, 首先这是一个用tableView纯代码Swift写的简单界面, 你可以看到下面这些 - 使用Alamofire 进行网络请求 - 使用MJExtension 进行字典转模型 - 使用HanekeSwift 进行图片的赋值 ...

    原文链接

    在这篇博文中你可以看到那些内容呢, 首先这是一个用tableView纯代码Swift写的简单界面, 你可以看到下面这些
    - 使用Alamofire 进行网络请求
    - 使用MJExtension 进行字典转模型
    - 使用HanekeSwift 进行图片的赋值
    - 如何写一个模型(M)
    - 如何自定义一个UITableViewCell

    演示

    Alamofire 简单网络请求

    func XTNetworkReq(url: String){
            print("SUMMER_TEST_1")
            Alamofire.request(.GET, url, parameters: nil)
                .validate(contentType: ["application/json", "text/json", "text/javascript", "text/html","text/css", "text/plain","application/x-javascript"])
                .responseJSON { response in
                    switch response.result {
                    case .Success:
                    // print("Validation Successful: \\\\(response.result.value)")
                    // json 转化成字典
                    // 并进行数据解析
                    let jsonDataDic = response.result.value as? NSDictionary
                    let dataDic = jsonDataDic?.objectForKey("data")
                    let listArray = dataDic?.objectForKey("list")
                    print(listArray)
                    // 字典转模型(MJExtension)
                    self.dataArray = AlamofireVCModel.mj_objectArrayWithKeyValuesArray(listArray)
                    if self.dataArray.count > 0
                    {
                        // 进行UI刷新操作
                        self.tableView.reloadData()
                    }
                    case .Failure(let error):
                        print(error)
                    }
            }
        }

    参照 Alamofire API_ 链接
    参照 MJExtension API_ 链接

    如何写一个模型

    class AlamofireVCModel: NSObject {
        var id:       Int = 0
        var title:    String?
        var pic:      String?
        var readnum:  String?
        var replynum: String?
    }

    如何自定义一个Cell

        var alaModel = AlamofireVCModel()
        var imagePic = UIImageView()
        var labelTitle = UILabel()
        override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
            super.init(style: UITableViewCellStyle.Default, reuseIdentifier: reuseIdentifier)
            self.createCellSubviews()
        }
    
        required init?(coder aDecoder: NSCoder) {
            fatalError("init(coder:) has not been implemented")
        }
        // MARK: - 布局UI
        func createCellSubviews(){
            imagePic = UIImageView.init(frame: CGRectMake(5, 5, self.contentView.frame.size.width - 10, 188 - 10))
            self.contentView.addSubview(imagePic)
    
            labelTitle = UILabel.init(frame: CGRectMake(10, 10, s_w, 60))
            labelTitle.numberOfLines = 0
            labelTitle.textColor = UIColor ( red: 1.0, green: 0.4666, blue: 0.3002, alpha: 1.0 )
            imagePic.addSubview(labelTitle)
        }
        // MARK: - layoutSubviews
        override func layoutSubviews() {
            if (self.alaModel.pic != nil && self.alaModel.pic?.hasSuffix("gif") != nil){
                // 进行图片的赋值, 这里给出的截取字符串的方法
                self.imagePic.hnk_setImageFromURL(NSURL.init(string: (self.alaModel.pic?.substringToIndex((self.alaModel.pic?.startIndex.advancedBy(66))!))!)!)
            }
            self.labelTitle.text = self.alaModel.title
        }

    iOS 走进Facebook POP的世界
    Swift版本仿网易云音乐播放音乐动画效果
    三分钟教你把代码托管到Github
    Swift 很强大的图表库-Charts使用 – 简书
    Swift版仿简书App淘宝App很友好弹出view效果
    iOS UICollectionView高级用法“长按自由移动cell重排
    iOS仿微信App添加带箭头的view
    iOS仿美团外卖饿了吗App点餐动画
    你要的Swift资料

    —————————————
    走心文章, 值得点赞 —文/夏天然后
    微博@夏天是个大人了 QQQ: 498143780
    —————————————
    展开全文
  • ios返回刷新原页面

    2015-02-02 15:08:35
    之前用的一种方法是在返回页面里面写的//点击返回操作-(void)viewWillDisappear:(BOOL)animated{ UIStoryboard *story=[UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]]; ...
    之前用的一种方法是在返回页面里面写的

    //点击返回操作后


    -(void)viewWillDisappear:(BOOL)animated{


            UIStoryboard *story=[UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];

            ScrollerViewController *mainList=[story instantiateViewControllerWithIdentifier:@"mainNavigation"];


        if ([mainList respondsToSelector:@selector(popoverPresentationController)]) {

            mainList.popoverPresentationController.sourceView = self.view;

        }


            [self.parentViewController presentViewController:mainList animated:NO completion:nil];


    }


    后来用的方法是在原页面中

    -(void)viewWillAppear:(BOOL)animated{




        //设置导航栏宽度


        CGRect r = [[UIScreen mainScreen] applicationFrame];


        self.navigationItem.titleView.frame=CGRectMake(0, 0, r.size.width, 40);


        //设置页面返回时 刷新页面


        //获取分类


        CommenData *c= [[CommenData alloc]init];


        self.category=[c getCategory];


        indexPage=0;


        secondPage=0;


        


        //导航更新


        [self.scrollnavi layoutSubviews] ;


        [self.scrollnavi setSelectedIndex:indexPage];


        //页面布局


        [self layoutSubviews];


        


        //设置按钮


        [_setButton addTarget:self action:@selector(goToSet) forControlEvents:UIControlEventTouchUpInside];


        


    }


    展开全文
  • 自己赶项目写了个类似淘宝搜索历史记录的界面,可刷新Demo.
  • 返回页面实现下面方法: - (void)navigationController:(UINavigationController*)navigationController willShowViewController:(UIViewController*)viewController animated:(BOOL)animated; 注意:需要遵循...
  • swift现实UITableView的cell自定义以及删除与添加,添加表的刷新功能
  • 在一个循环里面处理的大量数据的时候,会发现界面阻塞的情况。可以使用QEventLoop来解决。 参考文章:QT中使用QEventLoop来实现事件循环
  • //线程组解决同一个界面需要请求多个接口数据,当全部请求完成,再进入主线程刷新界面  /*  这种问题使用 dispatch_group_enter(grpupE);来解决,dispatch_group_enter 和 dispatch_group_leave 必须要成对...
  • 方法一 UIView.performWithoutAnimation { self.collectionView.reloadData(); } 方法二 UIView.animate(withDuration: 0.0) { collectionView.performBatchUpdates({ .
  • 因为POP回来的时候不会执行- (void)viewDidLoad,所以在这个方法中加一个标识,然后在-(void)viewWillAppear进行判断,如果没执行viewDidLoad,则说明是POP回来的,可以执行界面刷新等方法,代码如下: ...
  • //联系人:石虎 QQ:1224614774 昵称:嗡嘛呢叭咪哄  QQ群:807236138 群称:iOS 技术交流学习群 一、概念    * isKindOfClass(对象方法) ... * isMemberOfClass(对象方法) ... * isKindOfClass与isMem...
  • 在我的工程中,有后台工作的代码,后台工作完成需要通知前台所有页面刷新,最初我使用自定义的protocal来处理,理论上是可行的,我将所有需要更新的界面都实现该刷新协议,然后将该界面实例添加进一个数组,在需要...
  • 但是SwiftUI目前tabview存在一个小bug,当tab切换时内部中的list或NavigationLink将会重新刷新。 看看bug Jietu20200315-211354.gif 当我们切换到新的tab时,第一个tab被重置回初始状态了。 这个bug可以修复...
  • override func viewWillAppear(_ animated: Bool) { self.navigationController?.setNavigationBarHidden(true, animated: true) } ```
  • 我们经常会碰到返回上一页,但是需要刷新页面上与状态相关的信息,从而避免重复操作,错误信息的弊端。先说两种方法:1. 设置页面为不缓存,访问上一次页面就需要重新去服务器获取。(我没有试过)。HTMLJAVAif ...
  • 首先要在appDelegate里添加导航视图控制器navigationColler func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?...
1 2 3 4 5 ... 20
收藏数 3,229
精华内容 1,291
热门标签
关键字:

swift 界面返回后刷新界面