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]; 
} 

}

上午我在这里所做的一切。它不适合我。请帮助我。

你必须开始在你的viewDidLoadUIRefreshControl这样的:

// 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)]; 
} 

还尝试检查,提及你的选择是否工作。点击你的选择器,然后按住命令按钮。

+0

感谢您的评论:)但我也试过,但它不工作。 – Wodjefer

+0

尝试重命名您的选择器,然后 – iBug

+0

对不起没有工作:(。 – Wodjefer

问题出在你的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]; 

} 
+0

我没有使用UITableviewController这就是为什么我喜欢that.i使用UIViewController – Wodjefer

+0

没问题。看你已经把你的表视图放在这个视图UIViewController也作为self.genericMainTableView的引用,所以不需要这个UITableViewController实例化,只要替换上面的代码,它就可以工作,希望如果其余的东西都是正确的, –

+0

感谢你的时间。 :( – Wodjefer