UITableViewController 以å¤ã§ UIRefreshControl ãä½¿ãæ¹æ³ [ãªã¹ã¯ãã]
Tweetie ã§æåã«ãªã£ã Pull to refresh ã§ãã iOS 6 ãã UIRefreshControl
ã¨ã㦠OS æ¨æºã§è¿½å ããã¾ãããæ®å¿µãªãã UIRefreshControl
㯠UITableViewController
ã¨ä¸ç·ã«ä½¿ãããã¾ã£ã¨ããªæ¹æ³ã¯ããã¾ãããUIViewController
+ UITableView
ã®ãããªæ§æã§ç¡çç¢çä½¿ãæ¹æ³ãæ¸ãã¦ã¿ã¾ãã
éè¦
å人çã«ãããããã¾ãããç´ ç´ã« UITableViewController
ã§ä½¿ããããªæ¹åã§ã¾ãå®è£
ãæ¤è¨ãã¦ãã ãããããããç´¹ä»ããæ¹æ³ã¯ OS ãã¼ã¸ã§ã³çã®è¦å ã«å·¦å³ããã¦æå¾
ãããããªåããããªãå±éºæ§ãããã¾ãã
æ¹æ³
UIRefreshControl
ãçæã㦠UITableView
ã®ã¤ã³ã¹ã¿ã³ã¹ã« addSubview ããã ãã§ãã
ãã ããããã ãã§ã¯ã¢ããªã Background ãã Foreground ã«æ»ã£ã¦ããæãã¿ãã®åãæ¿ãçã§ viewWillAppear ãªã©ãå¼ã°ãããã¨ã« UIRefreshControl
ã UITableView
ãããåé¢ã«åºã¦ãããã¨ãããã¾ãã
æåé¢ã«åºã¦ããã®ãããä¼ããæ¹æ³
viewWillAppear ã§
[self fixRefreshControlLayout]; if (self.refreshControl.isRefreshing) { [self.tableView setContentOffset:self.scrollOffsetToRestore animated:NO]; }
ã¨ãããããªæãã«ãã¾ãã
- 1è¡ç®ã§
UIRefreshControl
ã®ã¬ã¤ã¢ã¦ããèª¿æ´ - 2è¡ç®ä»¥éã§ refreshing ç¶æ
ã®æã®ããã«ä¿æãã¦ããã
UITableView
ã®contentOffset
ã復å ããã¦ãã¾ãã
1è¡ç®ã® fixRefreshControlLayout
ã¯ãããªæãã
- (void)fixRefreshControlLayout { if ([self isViewLoaded] == NO) { return ; } BOOL isRefreshing = self.refreshControl.isRefreshing; if (isRefreshing) { [self.refreshControl endRefreshing]; } [self.refreshControl removeFromSuperview]; self.refreshControl = nil; [self.tableView addSubview:self.refreshControl]; if (isRefreshing) { [self.refreshControl beginRefreshing]; } }
æåé¢ã«åºã¦ãã¦ãå度 addSubview ããã°æå¾ ããä½ç½®ã«åºã¦ãã¦ãããã®ã§å¿µã®ããé½åº¦é½åº¦å¼µãç´ãããã¦ãã¾ããç¹ã«ããã©ã¼ãã³ã¹ä¸ã¯å¤§ããªè¶³ããã«ã¯ãªã£ã¦ããªãå°è±¡ã§ãã
self.scrollOffsetToRestore
㯠viewWillDisappear:
ã®ã¿ã¤ãã³ã°ã§ç¾å¨ã® contentOffset ãä¿æãã¦ããããã«ãã¦ãã¾ãã
ã¾ã¨ã
ãã®ãããªç¡çç¢çãªå®è£
ããã¦ããä¼ãããããªå®è£
ã追å ãã¦ããããªã«ç¶ºéºãªæããããªãã§ããã§ãã®ã§ç¹°ãè¿ãã«ãªãã¾ããç´ ç´ãªå®è£
ãã¨ããã¨ãæ¿ãããããããã¾ããApple ã«ã¯ãã°ã¬ããéã㦠UIRefreshControl
ã UITableViewController
ã«éå®ãããã«ä½¿ããããã«è¦æãã¾ãããã