2016-09-13 4 views
1

AlamofireImage를 통해 이미지를로드하는 데 문제가 있습니다. 이미지를로드 한 후 셀을 업데이트하는 방법은 무엇입니까?이미지를로드 한 후 셀을 업데이트하십시오.

[self.imageView setImageWithURL:[NSURL URLWithString:imageURL] 
       placeholderImage:[UIImage imageNamed:@"YourPlaceholder.png"] 
         completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) { 
          //... completion code here ... 
         }]; 

아니면 FUNC를 만듭니다 아니면 부하 마감 당신이 원하는 무엇이든 할 후, 이미지 acsync를로드 SDWebimage을 사용할 수 있습니다

class NewTableViewController: UITableViewController { 


    var videos = [Video](){ 
     didSet { 
      dispatch_async(dispatch_get_main_queue()) { 
       self.tableView.reloadData() 
      } 
     } 
    } 
    let URL = "https://api.vid.me/channel/1/new" 


    override func viewDidLoad() { 
     super.viewDidLoad() 

     let request = Alamofire.request(.GET, self.URL) 
      request.responseObject { (response: Response<NewestVideos, NSError>) in 

      switch response.result { 
      case .Success(let newest): 
       self.videos = newest.videos! 
       print(self.videos) 
      case .Failure(let error): 
       print("Request failed with error: \(error)") 

      } 
     } 
    } 





... 

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! VideoTableViewCell 
     let video = videos[indexPath.row] 

     cell.titleLabel?.text = video.title != nil ? video.title! : "no name" 
     cell.videoImageView?.af_setImageWithURL(NSURL(fileURLWithPath: video.thumbnailUrl!)) //here i make image request from url (and url i get from request in viewdidload) 

     return cell 
    } 
... 
} 

답변

1

내 tableviewcontroller

tableviewcell.swift에 요청을해야합니다 핸들러 완성으로 이미지를로드하려면 다음을 확인하십시오.

func imageForUrl(urlString: String, completionHandler:(image: UIImage?, url: String) ->()) { 
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), {()in 
     let downloadTask: NSURLSessionDataTask = NSURLSession.sharedSession().dataTaskWithURL(NSURL(string: urlString)!, completionHandler: {(data: NSData?, response: NSURLResponse?, error: NSError?) -> Void in 
      if (error != nil) { 
       completionHandler(image: nil, url: urlString) 
       return 
      } 

      if data != nil { 
       let image = UIImage(data: data!) 
       dispatch_async(dispatch_get_main_queue(), {() in 
        completionHandler(image: image, url: urlString) 
       }) 
       return 
      } 

     }) 
     downloadTask.resume() 
    }) 

} 

및 사용 :

yourimage.images = self.imageForUrl("link", completionHandler: { (image, url) in 
     // do s.t 
    }) 

당신은있는 UIImage

의 확장을 만들 수 있습니다
관련 문제