干熟妇在线视频午夜剧场一级A级|99成人香视频日本两性激情视频|久久 午夜福利无码精品人妻一区|热久久超碰精品精品少妇一区二区|五月天综合在线国产一区免费视频|亚洲成人中心热re久久99|亚洲国产怡红院丁香五月综合h|玖玖九久久久午夜射精视频

十二年專注于品牌網(wǎng)站建設(shè) 十余年專注于網(wǎng)站建設(shè)_小程序開發(fā)_APP開發(fā),低調(diào)、敢創(chuàng)新、有情懷!
南昌百恒網(wǎng)絡(luò)微信公眾號 掃一掃關(guān)注
小程序
tel-icon全國服務(wù)熱線:400-680-9298,0791-88117053
掃一掃關(guān)注百恒網(wǎng)絡(luò)微信公眾號
掃一掃打開百恒網(wǎng)絡(luò)微信小程序

百恒網(wǎng)絡(luò)

南昌百恒網(wǎng)絡(luò)

IOS軟件開發(fā)之下拉刷新控件功能的實現(xiàn)方法

百恒網(wǎng)絡(luò) 2017-08-14 5284

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

iOS 6的下拉刷新

iOS 6的下拉刷新

iOS 7的下拉刷新

iOS 7的下拉刷新

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

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

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日期列表,用于在表視圖中顯示需要的數(shù)據(jù)。在viewDidLoad方法,我們初始化了當前時間的一條模擬數(shù)據(jù)。第①行代碼用于創(chuàng)建UIRefreshControl對象。第②行代碼用于設(shè)置 UIRefreshControl對象的attributedTitle屬性,它是用于顯示下拉控件的標題。第③行代碼通過編程方式為 UIRefreshControl控件添加UIControlEvents.ValueChanged(Objective-C中是UIControlEvent.ValueChanged)事件處理方法。refreshTableView是該事件的處理方法,相關(guān)代碼如下:

func refreshTableView() {

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

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

//添加新的模擬數(shù)據(jù)

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:@"加載中..."]; ①

//添加新的模擬數(shù)據(jù)

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

[self.Logs addObject:date];

[self.refreshControl endRefreshing]; ②

self.refreshControl.attributedTitle

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

[self.tableView reloadData]; ④

}

}

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

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

實現(xiàn)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開發(fā)中,應(yīng)用能夠?qū)崿F(xiàn)用戶需求的前提下,良好的用戶體檢是我們更高的追求,因為我們的產(chǎn)品不僅僅是具備某種功能的工具,更是一件藝術(shù)品,是我們心、智、力的結(jié)晶。

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


400-680-9298,0791-88117053
掃一掃關(guān)注百恒網(wǎng)絡(luò)微信公眾號
掃一掃打開百恒網(wǎng)絡(luò)小程序

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

售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售后服務(wù) 售后服務(wù)
 
售后服務(wù) 售后服務(wù)
 
備案專線 備案專線
 
×