UIViewController中的UIRefreshControl
问题描述:
我有一个UIViewController
,它有一个UITableView
作为subView
。我正试图在桌面上添加一个拉到刷新。 我有UIRefresh
显示,但它从来没有调用选择器。我没有收到有关拉动行动的通知。 因为我使用这个查看我的通用视图我不能使用TableView
控制器,这样我可以使用多个视图控制器UIViewController中的UIRefreshControl
- (void)viewDidLoad{
[super viewDidLoad];
// Refresh control
UITableViewController *tableViewController = [[UITableViewController alloc] initWithStyle:UITableViewStylePlain];
tableViewController.tableView = self.genericMainTableView;
// Initialise refresh control
self.refreshControl = [[UIRefreshControl alloc] init];
//Adding target to refresh Control object
[self.refreshControl addTarget:self action:@selector(refresh:) forControlEvents:UIControlEventValueChanged];
//Setting attribute Title
self.refreshControl.attributedTitle = [[NSAttributedString alloc]initWithString:@"Pull To Refresh"];
//Adding as subview to tableView
tableViewController.refreshControl = self.refreshControl;
}
- (void)refresh:(UIRefreshControl *)refreshControl {
reachability = [Reachability reachabilityForInternetConnection];
NetworkStatus netStatus = [reachability currentReachabilityStatus];
//Not Reachable - No Internet Connection
if (netStatus == NotReachable) {
[[[UIAlertView alloc]initWithTitle:@"Network Error" message:@"Please Check your Network Connection" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]show];
[refreshControl endRefreshing];
}
else{
//My Function Call
[self functionCall];
//Reload the Table
[self.genericMainTableView reloadData];
//set the title while refreshing
refreshControl.attributedTitle = [[NSAttributedString alloc]initWithString:@"Refreshing the TableView"];
//set the date and time of refreshing
NSDateFormatter *formattedDate = [[NSDateFormatter alloc]init];
[formattedDate setDateFormat:@"MMM d, h:mm a"];
NSString *lastupdated = [NSString stringWithFormat:@"Last Updated on %@",[formattedDate stringFromDate:[NSDate date]]];
refreshControl.attributedTitle = [[NSAttributedString alloc]initWithString:lastupdated];
//End Refreshing
[refreshControl endRefreshing];
}
}
上午我在这里所做的一切。它不适合我。请帮助我。
答
你必须开始在你的viewDidLoad
的UIRefreshControl
这样的:
// Pull To Refresh Code
UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
[refreshControl addTarget:self action:@selector(handleRefresh:) forControlEvents:UIControlEventValueChanged];
这是你的选择handleRefresh:
-(void) handleRefresh:(UIRefreshControl *) refreshControl{
[self performSelector:@selector(yourMethodHere)];
}
还尝试检查,提及你的选择是否工作。点击你的选择器,然后按住命令按钮。
答
问题出在你的viewDidLoad上。无需实例化UITableViewController进行刷新控制。只是改变viewDidLoad到这
- (void)viewDidLoad{
[super viewDidLoad];
// Initialise refresh control
self.refreshControl = [[UIRefreshControl alloc] init];
//Adding target to refresh Control object
[self.refreshControl addTarget:self action:@selector(refresh:) forControlEvents:UIControlEventValueChanged];
//Setting attribute Title
self.refreshControl.attributedTitle = [[NSAttributedString alloc]initWithString:@"Pull To Refresh"];
//Adding as subview to tableView
[self.genericMainTableView addSubview:self.refreshControl];
}
感谢您的评论:)但我也试过,但它不工作。 – Wodjefer
尝试重命名您的选择器,然后 – iBug
对不起没有工作:(。 – Wodjefer