UIRefreshController遍历UICollectionView

时间:2014-02-25 02:08:04

标签: ios objective-c uicollectionview uirefreshcontrol

这是一个经常发生的错误,但并非总是如此。我有一个刷新控件添加到我的UICollectionView。当我刷新时,它完美地运作。但是,如果我半次刷新它甚至完全刷新,请转到应用程序中的另一个选项卡,然后返回,当我刷新时,UIRefreshControl出现在UICollectionView的一部分上。此外,它不是从零刷新微调栏开始,而是从所有加载开始(我已经在其他应用程序中注意到了这一点,但是,这很多是操作系统错误,但在操作系统应用程序中,微调器不会过去内容)。 这是问题的图像:https://www.dropbox.com/s/4qk6qjrdlapsvz0/IMG_0074.JPG 以下是我在ViewDidLoad中设置RefreshController的方法。

refreshControl = [[UIRefreshControl alloc] init];

[refreshControl addTarget:self action:@selector(refresh2)

forControlEvents:UIControlEventValueChanged];

[self.collectionView addSubview:refreshControl];

self.collectionView.alwaysBounceVertical = YES;

任何人都知道如何让微调器进入CollectionViewController的后面?感谢

2 个答案:

答案 0 :(得分:25)

我也遇到了这个问题并且弄清楚了,所以我想我会分享。我所做的是将它强制到UICollectionView的后面。我尝试过其他的东西,比如sendSubViewToBack和设置UICollectionViewCell的zIndex,但它没有用。但是下面的确有效,我在iOS 6 +上进行了测试:

refreshControl.layer.zPosition = -1;

对于iOS 6,请添加:

refreshControl.userInteractionEnabled = NO;

答案 1 :(得分:2)

<强>问题: 您开始向下滚动并部分显示UIRefreshControl,但您不会一直向下滚动以使其开始旋转。您导航到另一个视图(或&#34;最小化&#34; app,发送到后台)并返回。你滚动了一点,UIRefreshControl显示在你的集合视图的顶部,满载,不受欢迎,不会旋转。

<强> 解决方案: 您需要在viewWillDissappear上结束重新刷新,并将应用程序发送到后台。

var refreshControl = UIRefreshControl()

override func viewDidLoad() {
    super.viewDidLoad()
    refreshControl.addTarget(self, action: #selector(ViewController.methodNameForRefreshing), forControlEvents: .ValueChanged)
    collectionView.addSubview(refreshControl)
    //or
    tableView.addSubview(refreshControl)

    NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(ViewController.willResignActiveNotif), name: UIApplicationWillResignActiveNotification, object: nil)
}

override func viewWillDisappear(animated: Bool) {
    super.viewWillDisappear(animated)
    refreshControl.endRefreshing()
}

func willResignActiveNotif(notification: NSNotification) {
    refreshControl.endRefreshing()
}