2014-06-20 48 views
1

我有一個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]; 
} 

}

上午我在這裏所做的一切。它不適合我。請幫助我。

回答

0

你必須開始在你的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

1

問題出在你的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