0
私は、フォームに記入してライブラリからイメージを設定し、ディレクトリに格納する状況があります。 ディレクトリから画像を取得できますが、スクロールの途中でtableview
リストがちらつきますので、私はdispatch_async
の方法で作業していますができません。ディレクトリからスウィッチ非同期ロードイメージ
誰かが解決策を持っている場合は、私に知らせてください。
ここに私のコードです。
import UIKit
func getDocumentsURL() -> NSURL {
let documentsURL = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0]
return documentsURL
}
func fileInDocumentsDirectory(filename: String) -> String {
let fileURL = getDocumentsURL().URLByAppendingPathComponent(filename)
return fileURL.path!
}
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource{
var marrEmpData : NSMutableArray!
@IBOutlet var MyTable: UITableView!
@IBAction func addEmpInfo(){
}
override func viewWillAppear(animated: Bool) {
self.getStudentData()
}
func getStudentData()
{
marrEmpData = NSMutableArray()
marrEmpData = ModelManager.getInstance().getAllStudentData()
MyTable.reloadData()
}
override func viewDidLoad() {
super.viewDidLoad()
MyTable.delegate = self
MyTable.dataSource = self
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
//return names.count;
return marrEmpData.count;
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell:CustomCell = self.MyTable.dequeueReusableCellWithIdentifier("cells") as! CustomCell
let emp:EmpInfo = marrEmpData.objectAtIndex(indexPath.row) as! EmpInfo
let randomNum = "Image-\(indexPath.row+1).png"
let imagePathOne = fileInDocumentsDirectory(randomNum)
dispatch_async(dispatch_get_main_queue()) {
if let loadedImage = self.loadImageFromPath(imagePathOne) {
print("view Loaded Image: \(loadedImage)")
cell.photo.image = loadedImage
}
else {
cell.photo.image = UIImage(named: "default_user")
}
}
// user profile
cell.name.text = emp.full_name
cell.age.text = emp.age
cell.phone.text = emp.phone
return cell
}
// which one is tapped
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
print("You tapped cell number \(indexPath.row).")
}
// load image of user
func loadImageFromPath(path: String) -> UIImage? {
print("image-----\(path)")
let image = UIImage(contentsOfFile: path)
if image == nil {
print("missing image at: \(path)")
}
print("Loading image from path: \(path)") // this is just for you to see the path in case you want to go to the directory, using Finder.
return image
}
}