2016-11-09 105 views
1

我在基本tableview单元格中加载不同的图像,并希望在加载图像时显示单元格中的活动指示器。我正在使用单独的单元格文件,如示例代码。我知道在哪里放置代码只是不确定语法。我发现了几种将代码放入视图中的方法,但不是特别在单元中。任何人有想法?谢谢。tableview单元格中的显示活动指示器

func configureCell(favorite: Article) { 
    self.favorite = favorite 

    downloadImage(NSURL(string: self.favorite.mainImage)!) 

func downloadImage(url: NSURL, type: String) { 
    getDataFromUrl(url) { (data, response, error) in 
     //show activity indicator 
     dispatch_async(dispatch_get_main_queue()) {() -> Void in 
      guard let data = data where error == nil else { return } 
       self.mainImage.image = UIImage(data: data) 
     } 
    } 
} 

func getDataFromUrl(url: NSURL, completion: ((data: NSData?, response: NSURLResponse?, error: NSError?) -> Void)) { 

    NSURLSession.sharedSession().dataTaskWithURL(url) { (data, response, error) in 
     completion(data: data, response: response, error: error) 
    }.resume() 

} 

回答

2

你可以做类似下面,让我知道是否适合你,你可以修改frame按照您的要求。

func downloadImage(url: NSURL, type: String) { 
    let activityIndicator = UIActivityIndicatorView() 
    activityIndicator.frame = slef.mainImage.bounds 

    getDataFromUrl(url) { (data, response, error) in 
     //show activity indicator 
     self.mainImage.addSubview(activityIndicator) 
     activityIndicator.startAnimating() 
     dispatch_async(dispatch_get_main_queue()) {() -> Void in 
      guard let data = data where error == nil else { return } 
      activityIndicator.stopAnimating() 
      activityIndicator.removeFromSuperview() 
      self.mainImage.image = UIImage(data: data) 
     } 
    } 
} 
+0

感谢您的快速回复,这是工作!它只是没有定位在中心位置,在右边,但它显示出来。我还必须在getDataFromUrl函数上面移动self.mainImage.addSubview(activityIndi​​cator)和activityIndi​​cator.startAnimating()。 – user3712837

+0

我似乎无法正确居中你知道吗?我试过这个,但它不是很正确:activityIndi​​cator.frame = CGRect(x:0,y:0,width:self.mainImage.bounds.width/2,height:self.mainImage.bounds.height/2) – user3712837

+0

你的x,y位置不正确,你需要把它放在超级视图 – Santosh

相关问题