十年專注于品牌網站建設 十余年專注于網站建設_小程序開發_APP開發,低調、敢創新、有情懷!
      南昌百恒網絡微信公眾號 掃一掃關注
      小程序
      tel-icon全國服務熱線:400-680-9298,0791-88117053
      掃一掃關注百恒網絡微信公眾號
      掃一掃打開百恒網絡微信小程序

      百恒網絡

      南昌百恒網絡

      IOS軟件開發之下拉刷新控件功能的實現方法

      百恒網絡 2017-08-14 5664

      隨著下拉刷新模式的影響力越來越大,蘋果不得不考慮把它列入自己的規范之中,并在iOS 6 API中推出了下 拉刷新控件。圖1所示的是iOS 6中的下拉刷新,有點像是在拉“膠皮糖”,當這個“膠皮糖”拉斷時,就會出現活動指示器。圖2所示的是iOS 7之后中的下拉刷新,iOS 7之后提倡扁平化設計,這里的下拉動畫效果變成了活動指示器,而不是“膠皮糖”。

      iOS 6的下拉刷新

      iOS 6的下拉刷新

      iOS 7的下拉刷新

      iOS 7的下拉刷新

      在iOS 6之后,UITableViewController添加了一個refreshControl屬性,這個屬性保持了UIRefreshControl的 一個對象指針。UIRefreshControl就是iOS 6為表視圖實現下拉刷新而提供的類,目前該類只能應用于表視圖界面。 UIRefreshControl的refreshControl屬性與UITableViewController配合使用,關于下拉刷新布局等問題可以不必考慮,UITableViewController會將其自動放置于表視圖中。

      下面南昌APP制作開發公司-百恒網絡就通過一個例子來讓大家了解一下UIRefreshControl控件的用法。先來看看視圖控制器ViewController的定義和屬性,以及視圖加載方法viewDidLoad的相關代碼:

      class ViewController: UITableViewController {

      var Logs : NSMutableArray!

      override func viewDidLoad() {

      super.viewDidLoad()

      //初始化變量和時間

      self.Logs = NSMutableArray()

      var date = NSDate()

      self.Logs.addObject(date)

      //初始化UIRefreshControl

      var rc = UIRefreshControl() ①

      rc.attributedTitle = NSAttributedString(string: "下拉刷新") ②

      rc.addTarget(self, action: "refreshTableView",

      forControlEvents: UIControlEvents.ValueChanged) ③

      self.refreshControl = rc

      }

      }

      #import "ViewController.h"

      @interface ViewController ()

      @property (nonatomic,strong) NSMutableArray* Logs;

      @end

      @implementation ViewController

      - (void)viewDidLoad

      {

      [super viewDidLoad];

      //初始化變量和時間

      self.Logs = [[NSMutableArray alloc] init];

      NSDate *date = [[NSDate alloc] init];

      [self.Logs addObject:date];

      //初始化UIRefreshControl

      UIRefreshControl *rc = [[UIRefreshControl alloc] init]; ①

      rc.attributedTitle = [[NSAttributedString alloc]initWithString:

      @"下拉刷新"]; ②

      [rc addTarget:self action:@selector(refreshTableView)

      forControlEvents:UIControlEventValueChanged]; ③

      self.refreshControl = rc;

      }

      上述代碼中,Logs屬性存放了NSDate日期列表,用于在表視圖中顯示需要的數據。在viewDidLoad方法,我們初始化了當前時間的一條模擬數據。第①行代碼用于創建UIRefreshControl對象。第②行代碼用于設置 UIRefreshControl對象的attributedTitle屬性,它是用于顯示下拉控件的標題。第③行代碼通過編程方式為 UIRefreshControl控件添加UIControlEvents.ValueChanged(Objective-C中是UIControlEvent.ValueChanged)事件處理方法。refreshTableView是該事件的處理方法,相關代碼如下:

      func refreshTableView() {

      if (self.refreshControl?.refreshing == true) {

      self.refreshControl?.attributedTitle = NSAttributedString(string:"加載中...") ①

      //添加新的模擬數據

      var date = NSDate()

      self.Logs.addObject(date)

      self.refreshControl?.endRefreshing() ②

      self.refreshControl?.attributedTitle = NSAttributedString(string:"下拉刷新") ③

      self.tableView.reloadData() ④

      }

      }

      -(void) refreshTableView

      {

      if (self.refreshControl.refreshing) {

      self.refreshControl.attributedTitle

      = [[NSAttributedString alloc]initWithString:@"加載中..."]; ①

      //添加新的模擬數據

      NSDate *date = [[NSDate alloc] init];

      [self.Logs addObject:date];

      [self.refreshControl endRefreshing]; ②

      self.refreshControl.attributedTitle

      = [[NSAttributedString alloc]initWithString:@"下拉刷新"]; ③

      [self.tableView reloadData]; ④

      }

      }

      UIRefreshControl的refreshing屬性可以判斷控件是否處于刷新狀態,刷新狀態的圖標是我們常見的活動指示器。第①行代碼用于將顯示標題設置為“加載中...”。

      此外,南昌APP制作開發公司-百恒網絡想告訴大家的是,在刷新操作完成的時候,endRefreshing方法可以停止下拉刷新控件,回到初始狀態,顯示的標題文本為“下拉刷新”,見第②行和第③行代碼。第③行代碼用于重新設置下拉刷新控件的標題,然后再通過第④行語句重新加載表視圖。

      實現UITableViewDataSource的方法的代碼如下:

      override func tableView(tableView: UITableView,

      numberOfRowsInSection section: Int) -> Int {

      return self.Logs.count

      }

      override func tableView(tableView: UITableView,

      cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

      let cellIdentifier = "CellIdentifier"

      var cell:UITableViewCell! = tableView

      .dequeueReusableCellWithIdentifier(cellIdentifier)

      as? UITableViewCell

      if (cell == nil) {

      cell = UITableViewCell(style: UITableViewCellStyle.Default,

      reuseIdentifier:cellIdentifier)

      }

      var dateFormatter : NSDateFormatter = NSDateFormatter()

      dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss zzz"

      var theDate = self.Logs[indexPath.row] as NSDate

      cell.textLabel?.text = dateFormatter.stringFromDate(theDate)

      cell.accessoryType = UITableViewCellAccessoryType.DisclosureIndicator

      return cell

      }

      - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {

      return 1;

      }

      - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:

      (NSInteger)section {

      return [self.Logs count];

      }

      - (UITableViewCell *)tableView:(UITableView *)tableView

      cellForRowAtIndexPath:(NSIndexPath *)indexPath {

      static NSString *CellIdentifier = @"Cell";

      UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:

      CellIdentifier];

      if (cell == nil) {

      cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1

      reuseIdentifier:CellIdentifier];

      }

      NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];

      [dateFormat setDateFormat: @"yyyy-MM-dd HH:mm:ss zzz"];

      cell.textLabel.text = [dateFormat stringFromDate: [self.Logs

      objectAtIndex:[indexPath row]]];

      cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

      return cell;

      }

      最后運行一下,看看效果即可。

      在南昌APP開發中,應用能夠實現用戶需求的前提下,良好的用戶體檢是我們更高的追求,因為我們的產品不僅僅是具備某種功能的工具,更是一件藝術品,是我們心、智、力的結晶。

      關于在IOS軟件開發中下拉刷新控件功能的實現方法就已經講完了,如果大家還有哪些不太明白的地方可隨時來電和我們聯系。此外,了解更多關于APP開發的相關知識,歡迎訪問公司官網。


      400-680-9298,0791-88117053
      掃一掃關注百恒網絡微信公眾號
      掃一掃打開百恒網絡小程序

      歡迎您的光顧,我們將竭誠為您服務×

      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售前咨詢 售前咨詢
       
      售后服務 售后服務
       
      售后服務 售后服務
       
      備案專線 備案專線
       
      ×
      国产成人亚洲精品无码AV大片| 99久久国产综合精品五月天| 国产精品嫩草影院一二三区| 国产精品三级国语在线看| 国产精品综合AV一区二区国产馆| 91精品久久国产青草| 无码精品久久久天天影视| 精品一区二区三区中文字幕| 久久久精品波多野结衣| 国产精品视频你懂的| 国产精品高清在线观看| 日韩电影免费在线| 亚洲综合日韩中文字幕v在线| 国产成人精品免费视频大全五级| 99亚洲精品卡2卡三卡4卡2卡| 亚洲精品国产suv一区88| 亚洲首页国产精品丝袜| 国产精品免费网站| 国产精品福利在线播放| 亚洲伊人精品综合在合线| 69精品免费视频| 2020精品国产自在现线看| 97精品免费视频| 久久精品水蜜桃av综合天堂| 久久亚洲精品国产精品| 亚洲精品无码不卡| 日韩精品国产另类专区| 午夜精品成年片色多多| 香蕉久久夜色精品国产小说| 无码人妻精品一区二区三区久久 | 亚洲精品高清无码视频| 国产精品一区三区| 精品国产日韩亚洲一区| 国产精品麻豆VA在线播放| 凹凸国产熟女精品视频app| 国产成人精品久久亚洲| 国产99视频精品免费视频76| 精品国产青草久久久久福利| 久久久无码精品亚洲日韩软件| 中文字幕免费视频精品一 | 亚洲午夜精品一区二区麻豆 |