「Ios/swift/TableView/API画像連動スクロール読み込み」の版間の差分
ナビゲーションに移動
検索に移動
ページの作成:「==事前準備== 以下を事前に見ておく ios/swift/TableView/画像付き [ショートカット] ios/swift/外部ライブラリ/Alamofire [ショート...」 |
編集の要約なし |
||
| 10行目: | 10行目: | ||
==サンプル== | ==サンプル== | ||
一番下までスクロールすると次を読み込む | 一番下までスクロールすると次を読み込む | ||
-ViewController.swift | |||
import UIKit | |||
import Alamofire | |||
class ViewController: UIViewController ,UITableViewDataSource, UITableViewDelegate { | |||
@IBOutlet weak var imgTableView: UITableView! | |||
private var _imgs: Array<ImgInit> = [] | |||
private var isLoading: Bool = false | |||
private var _page: Int = 1 | |||
override func viewDidLoad() { | |||
super.viewDidLoad() | |||
imgTableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "Cell") | |||
imgTableView.delegate = self | |||
imgTableView.dataSource = self | |||
apiexec() | |||
} | |||
private func apiexec() { | |||
Alamofire.request(.GET, "http://localhost/api/testimgs", parameters: ["page": self._page]).responseJSON { response in | |||
if response.result.isSuccess { | |||
let jsonDic = response.result.value as! NSDictionary | |||
let imgs = jsonDic["imgs"] as! NSArray | |||
let cnt = jsonDic["cnt"] as! Int | |||
print(cnt) | |||
for img in imgs { | |||
let name:String = img["name"] as! String | |||
let thumbnail:String = img["thumbnail"] as! String | |||
let _img = ImgInit(name: name, thumbnail: thumbnail) as ImgInit | |||
self._imgs.append(_img) | |||
} | |||
self.imgTableView.reloadData() // 更新 | |||
self.isLoading = false | |||
} | |||
} | |||
} | |||
override func didReceiveMemoryWarning() { | |||
super.didReceiveMemoryWarning() | |||
} | |||
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { | |||
return self._imgs.count | |||
} | |||
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { | |||
print(self._imgs[indexPath.row].thumbnail) | |||
let cell = | |||
tableView.dequeueReusableCellWithIdentifier("CustomCell") as! CustomTableViewCell | |||
cell.setCell(self._imgs[indexPath.row].thumbnail, text: self._imgs[indexPath.row].name) | |||
return cell | |||
} | |||
func scrollViewDidScroll(scrollView: UIScrollView) { | |||
var contentOffsetWidthWindow = self.imgTableView.contentOffset.y + self.imgTableView.bounds.size.height | |||
let eachToBottom = contentOffsetWidthWindow >= self.imgTableView.contentSize.height | |||
if (!eachToBottom || self.isLoading) { | |||
return; | |||
} | |||
self.isLoading = true | |||
self._page = self._page + 1 | |||
apiexec() | |||
} | |||
} | |||
2016年6月24日 (金) 23:42時点における版
事前準備
以下を事前に見ておく
ios/swift/TableView/画像付き [ショートカット]
ios/swift/外部ライブラリ/Alamofire [ショートカット]
ios/swift/TableView/API画像連動 [ショートカット]
サンプル
一番下までスクロールすると次を読み込む
-ViewController.swift
import UIKit
import Alamofire
class ViewController: UIViewController ,UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var imgTableView: UITableView!
private var _imgs: Array<ImgInit> = []
private var isLoading: Bool = false
private var _page: Int = 1
override func viewDidLoad() {
super.viewDidLoad()
imgTableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "Cell")
imgTableView.delegate = self
imgTableView.dataSource = self
apiexec()
}
private func apiexec() {
Alamofire.request(.GET, "http://localhost/api/testimgs", parameters: ["page": self._page]).responseJSON { response in
if response.result.isSuccess {
let jsonDic = response.result.value as! NSDictionary
let imgs = jsonDic["imgs"] as! NSArray
let cnt = jsonDic["cnt"] as! Int
print(cnt)
for img in imgs {
let name:String = img["name"] as! String
let thumbnail:String = img["thumbnail"] as! String
let _img = ImgInit(name: name, thumbnail: thumbnail) as ImgInit
self._imgs.append(_img)
}
self.imgTableView.reloadData() // 更新
self.isLoading = false
}
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self._imgs.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
print(self._imgs[indexPath.row].thumbnail)
let cell =
tableView.dequeueReusableCellWithIdentifier("CustomCell") as! CustomTableViewCell
cell.setCell(self._imgs[indexPath.row].thumbnail, text: self._imgs[indexPath.row].name)
return cell
}
func scrollViewDidScroll(scrollView: UIScrollView) {
var contentOffsetWidthWindow = self.imgTableView.contentOffset.y + self.imgTableView.bounds.size.height
let eachToBottom = contentOffsetWidthWindow >= self.imgTableView.contentSize.height
if (!eachToBottom || self.isLoading) {
return;
}
self.isLoading = true
self._page = self._page + 1
apiexec()
}
}