Tôi đang sử dụng đoạn mã sau để tạo ra một UIRefreshControl:UIRefreshControl trên viewDidLoad
- (void) viewDidLoad
{
[super viewDidLoad];
UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
[refreshControl addTarget:self action:@selector(doLoad) forControlEvents:UIControlEventValueChanged];
self.refreshControl = refreshControl;
}
- (void) doLoad
{
dispatch_async(dispatch_get_global_queue(0, 0), ^{
// Instead of sleeping, I do a webrequest here.
[NSThread sleepForTimeInterval: 5];
dispatch_async(dispatch_get_main_queue(), ^{
[tableView reloadData];
[self.refreshControl endRefreshing];
});
});
}
Nó hoạt động tuyệt vời. Nếu tôi điều hướng đến chế độ xem của mình, hãy kéo bảng, mã chạy và dữ liệu sẽ hiển thị.
Tuy nhiên, những gì tôi muốn làm là có chế độ xem trong trạng thái 'tải' ngay khi nó xuất hiện (theo cách đó người dùng biết điều gì đó đang diễn ra). Tôi đã thử thêm các mục sau:
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[self.refreshControl beginRefreshing];
}
Nhưng có vẻ như nó không hoạt động. Khi tôi điều hướng đến chế độ xem, nó trông giống như một chế độ xem thông thường (điều khiển làm mới không hiển thị), cộng với khi tôi cố gắng kéo điều khiển làm mới, nó không bao giờ tải xong.
Rõ ràng là tôi sẽ làm điều này sai. Bất kỳ đề xuất về cách tôi nên xử lý này?
Nó phù hợp với tôi. Tôi làm những điều đúng đắn. Chỉ có hành động cho refreshControl mới có thuộc tính người gửi. Khi tôi vào màn hình, điều khiển làm mới không hiển thị nhưng nếu tôi kéo chế độ xem bảng xuống một chút, tôi có thể thấy điều khiển làm mới quay. – dasdom