2016-05-18 4 views
-1

Я просил 3 изображения URL из API. и я хочу отобразить 3 изображения из изображений url, которые были получены в ячейке в Collection View. Я новичок в быстрое программированиеПоказать 3 изображения с url в ячейку коллекции View Swift

вот мой код

class MainCollectionViewController: UICollectionViewController { 

override func viewDidLoad() { 
    super.viewDidLoad() 

    Alamofire.request(.POST, "URL").responseJSON { response in 

     if let value = response.result.value { 

      let json = JSON(value) 

      let data = json["data"].arrayValue 

      for datas in data { 

       let result = datas["image"].stringValue 

       print(result) 

      } 
     } 
    } 
} 

override func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int { 
    return 1 
} 

override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
    return 3 
} 

    override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 
     let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! MainCollectionViewCell 

     return cell 
    } 
} 

мое Изображение Посмотреть на mainCollectionViewCell имени mainImageView

+0

Результат будет печатать изображения URL право? –

+0

yup, it wil print image url –

+1

вы должны google любой общий учебник для веб-запроса. большинство из них делают похожие вещи, которые вы хотите – Shubhank

ответ

0

Я решил это. вот мой код

class MainCollectionViewController: UICollectionViewController { 


@IBOutlet var mainCollectionView: UICollectionView! 
var url = [String]() 

override func viewDidLoad() { 
    super.viewDidLoad() 

    Alamofire.request(.POST, "URL").responseJSON { response in 

     if let value = response.result.value { 

      let json = JSON(value) 

      let data = json["data"].arrayValue 

      for datas in data { 

       self.url.append(datas["image"].stringValue) 
      } 
      self.mainCollectionView.reloadData() 
     } 
    } 
} 
override func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int { 
    return 1 
} 

override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
    return url.count 
} 

    override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 
     let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! MainCollectionViewCell 



       let imageUrl:NSURL? = NSURL(string: url[indexPath.row]) 

       if let url = imageUrl { 

        cell.mainImageView.sd_setImageWithURL(url) 

     } 
     return cell 
} 

Я использую SDWebImages для отображения изображения

0

Напишите что-нибудь, как показано ниже в коде,

class MainCollectionViewController: UICollectionViewController { 

var myImageArray : NSMutableArray = NSMutableArray() 

override func viewDidLoad() { 
super.viewDidLoad() 

Alamofire.request(.POST, "URL").responseJSON { response in 

    if let value = response.result.value { 

     let json = JSON(value) 

     let data = json["data"].arrayValue 

     for datas in data { 

      let result = datas["image"].stringValue 

      self.myImageArray.addObject(result) 
      print(result) 

     } 
    } 
} 
} 

override func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int { 
return 1 
} 

override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
return self.myImageArray.count 
} 

override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 
    let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! MainCollectionViewCell 

    let url = NSURL(string: self.myImageArray.objectAtIndex(indexPath.row) as String) 
    let data = NSData(contentsOfURL: url!) //make sure your image in this url does exist, otherwise unwrap in a if let check 
    cell.mainImageView.image = UIImage(data: data!) 

    return cell 
} 
} 

Надеется, что это поможет вам :)

+0

Вы также можете использовать стороннюю библиотеку, такую ​​как SDWebImage, для загрузки изображения из URL. –

+0

говорит, что «AnyObject» не конвертируется в «String»; вы хотели использовать «как!» заставить downcast? on line 'let url = NSURL' Затем я добавляю '!' после как. то сборка выполнена, но она печатает ошибку SIGABRT –

+0

Является ли ваш mainImageView подключен или подключен к ImageView в вашей камере? и проверьте, помещая некоторую точку останова в URL-адрес, данные и изображение. А также распечатать Url в ячейке, чтобы проверить, есть ли у него массив или нет? –

Смежные вопросы