我的UITableViewController的tableview面临一个非常奇怪的问题。在iOS 9.2中进行测试
我在故事板中为UITableViewController启用了“刷新”,并为valueChanged附加了它的IBAction。请注意,tableview具有使用“Plain”样式和自定义高度为45的节标题。
问题在于,通常你会期望拉下tableview相当大的量来触发刷新控制并开始旋转。
然而,在我的场景中,即使是一点点滚动也会使刷新控件显示并开始旋转。像字面上2厘米,这将使它出现。甚至奇怪的是它自动扩展高度,即使我甚至没有拉动tableview足以触发刷新。
另请注意,即使它完全开始旋转并自动结束旋转,但我在IBAction中链接的用于刷新控制的方法实际上并未触发。
例如,我正在慢慢向上滚动,一旦我即将到达顶部,刷新控件将显示并向下移动tableview,开始旋转,停止旋转。所有这一切都没有拉出相当大的数量。
请注意,在我的代码中,我根本没有“beginRefreshing”。另外,我没有任何“scrollViewDidScroll”或“scrollViewDidDrag”等方法来触发刷新控件。
我从未见过这种问题。
由于其他原因,我无法使用自定义ViewView与自定义TableView,因此需要解决此问题。
任何帮助将不胜感激!
答案 0 :(得分:1)
您可以通过编程方式添加UIRefreshControl
,它将正常运行。这是一个简单的例子,其中UIRefreshControl不是IBOutlet
(我没有包括tableView数据源方法):
#import "ViewController.h"
@interface ViewController () <UITableViewDataSource>
@property (weak, nonatomic) IBOutlet UITableView *tableView;
@property (strong, nonatomic) UIRefreshControl *refreshControl;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.refreshControl = [[UIRefreshControl alloc] init];
self.refreshControl.backgroundColor = [UIColor lightGrayColor];
[self.refreshControl addTarget:self action:@selector(actionRefresh:) forControlEvents:UIControlEventValueChanged];
[self.tableView addSubview:self.refreshControl];
}
- (void)actionRefresh:(id)sender {
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self.refreshControl endRefreshing];
});
}
// ...UITableView dataSource methods
@end
答案 1 :(得分:0)
我能够通过删除应用程序并在清理和重建后重新安装它来解决它。非常奇怪的问题,我花了很多时间,但现在已经修好了!