2016-11-09 3 views
1

基本的なテーブルビューセルに異なるイメージをロードしていますが、イメージがロードされている間にセルにアクティビティインジケータを表示したいとします。私はサンプルコードのような別のセルファイルを使用しています。私はどこにコードを置くべきか正確には分からない。私はビューにコードを入れるいくつかの方法を見つけましたが、特にセルにはありません。誰でもアイデアはありますか?ありがとう。あなたは以下のように行うことができアクティビティインジケータをテーブルビューセルに表示

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

関連する問題