【发布时间】:2013-12-31 01:18:10
【问题描述】:
我尝试为 SVPullToRefresh 使用自定义视图,但我偶然发现了奇怪的问题。我制作了演示项目来说明问题:https://github.com/gaks/SVRefreshProblem
该项目只是一个带有 TableView 的 UITableViewController 和带有自定义刷新栏视图的 xib 文件。 SVPullToRefresh通过viewDidLoad中的IBOutlet添加到tableView中:https://github.com/gaks/SVRefreshProblem/blob/master/SVRefreshProblem/DemoViewController.m
还有一段代码从 xib 文件加载 RefreshBarView 并将其设置为 SVPullToRefresh 的自定义视图(“加载”状态仅用于说明):
RefreshBarView* refreshBarView = [[[NSBundle mainBundle] loadNibNamed:@"RefreshBarView" owner:self options:nil] objectAtIndex:0];
refreshBarView.bounds = CGRectMake(0, 0, 320, 60);
[[tableView pullToRefreshView] setCustomView:refreshBarView forState:SVPullToRefreshStateLoading];
问题在于,当您拉动表视图以触发刷新时,在调用 - (void)setState:(SVPullToRefreshState)newState 中的 [self layoutIfNeeded] 后,它会进入无限循环并吃掉所有可用内存状态。就我能够调试的情况而言,它一遍又一遍地调用- (void)layoutSubviews。
奇怪的是,当你打开xib文件时:https://github.com/gaks/SVRefreshProblem/blob/master/SVRefreshProblem/SVPullToRefresh/RefreshBarView.xib ...并从视图中删除标签 - 它工作得很好(除非您有一个空视图)。
我做错了什么?
【问题讨论】:
-
您找到解决方案了吗?我也有同样的问题。
标签: ios iphone objective-c xcode uitableview