をcellImageName
に保存しようとしています。これは、エラーの行の上にコメントとして示されています。CitySelectViewController
にあります。複数の配列のイメージ名を保存する方法は?
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")!]
let townImages: [String : UIImage] = [ "Town00" : UIImage(named: "town_00")! , "Town01" :UIImage(named: "town_01")!, "Town02" : UIImage(named: "town_02")!]
let cityBImages: [String : UIImage] = [ "CityB00" : UIImage(named: "city_B00")! , "CityB01" :UIImage(named: "city_B01")!, "CityB02" : UIImage(named: "city_B02")!]
let townBImages: [String : UIImage] = [ "TownB00" : UIImage(named: "town_B00")! , "TownB01" :UIImage(named: "town_B01")!, "TownB02" : UIImage(named: "town_B02")!]
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
if (indexPath.row == 2)
{
if self.areas == city
{
CityVC.imageSelected = cityBImages
}
else
if self.areas == town
{
CityVC.imageSelected = townBImages
}
else
// Ambiguous reference to member 'subscript'
CityVC.imageSelected = self.selectedImages[(indexPath as NSIndexPath).item]
}
これらのエラーを取り除くにはどうすればよいですか?すべてのselectedImageの最初の
This is `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]
}
? –
メンバー 'subscript'へのあいまいな参照です。私はあなたの参照のために問題のエラーをコメントしました – leaner122
最後の答えで示したように、なぜあなたはまだ 'City'構造体の配列の代わりに辞書を使用していますか?ディクショナリは、コレクションビューの間違ったデータ構造です。配列を使用する場合は、これらの配列を含む別の配列を作成し、それを使用してコレクションビューにセクションを提供するだけです。 – Paulw11