名前の画像辞書を次のように作成しようとしています。私はエラーに続いています(エラーのある行の上にコメントとして表示されます)。辞書から画像を呼び出す際のエラー
ViewController.swift
var selectedImages = [String : UIImage ]()
let cityImages: [String : UIImage] = [ "City00" : UIImage(named: "city_00")! , "City01" :UIImage(named: "city_01")!, "City02" : UIImage(named: "city_02")!]
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell{
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath)
as! CollectionViewCell
// Ambiguous reference to member 'subscript'
cell.imageView?.image = self.selectedImages[(indexPath as NSIndexPath).item]
return cell
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showOptions"
{
let indexPaths = self.collectionView!.indexPathsForSelectedItems!
var indexPath = indexPaths[0] as IndexPath
let CityVC = segue.destination as! CitySelectViewController
// Ambiguous reference to member 'subscript'
CityVC.imageSelected = self.selectedImages[(indexPath as NSIndexPath).item]
}
どのように私は、これらのエラーを取り除くのですか?
これはあなたの辞書はキーとしてUIImageを使用し、文字列値のためにそれをマッピングしCitySelectViewController.swift
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return self.imageSelected.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell{
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath)
as! CityCollectionViewCell
cell.imageView?.image = imageSelected[(indexPath as NSIndexPath).row]
return cell
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let cell = collectionView.cellForItem(at: indexPath)
cellImage = imageSelected[(indexPath as NSIndexPath).row]
cellImageName = imageSelected[(indexPath as NSIndexPath).row]
}
最初のエラーは、 'UIImage'キーを持つ辞書のキーとして整数を使用しているためです。 2番目のものには同じ問題があり、そのまわりにはさらに '[]'があります。 – dan
都市名の配列が必要であると思われますので、文字列の都市名を '[String:UIImage]'の辞書のキーとして使用する必要があります。辞書自体は順序付けされていないため、コレクションビューとの良好な一致はありません。コレクションビューには '.row'ではなく' indexPath.item'を使うべきです – Paulw11
@ Paulw11、あなたが言ったようにしましたが、私はまだこのあいまいなエラーが出ています。私はちょうど私の現在の解決に私の質問を編集しました – leaner122