我在我的UICollectionViewCell.swift中有一個按鈕:我想根據某些參數爲它提供警報。從UICollectionViewCell提供AlertView
class CollectionViewCell: UICollectionViewCell {
var collectionView: CollectionView!
@IBAction func buttonPressed(sender: UIButton) {
doThisOrThat()
}
func doThisOrThat() {
if x == .NotDetermined {
y.doSomething()
} else if x == .Denied || x == .Restricted {
showAlert("Error", theMessage: "there's an error here")
return
}
}
func showAlert(title: String, theMessage: String) {
let alert = UIAlertController(title: title, message: theMessage, preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil))
self.collectionView!.presentViewController(alert, animated: true, completion: nil)
}
在self.collectionView!.presentViewController
線我拿到一個破發:
fatal error: unexpectedly found nil while unwrapping an Optional value
我猜,這已經成才做CollectionView
是如何被使用的 - 我不完全理解自選還。我知道UICollectionCell
不能.presentViewController
- 這就是爲什麼我想要UICOllectionView
來做到這一點。
我該如何做這項工作?我想過使用extension
但不知道如何製作UICOllectionViewCell
採用.presentViewController
任何想法?
喜@Danielž - 你的解釋表示感謝。我在'CollectionView'的'import'語句的正下方添加了'@protocol ...'。然後我將'CollectionViewDelegate'添加到'CollectionViewCell'類中......將委託屬性添加到'CollectionViewCell'(不會讓我變弱)。將'showAlert'移至視圖控制器。在'cellForItem'中分配委託,並用'delegate'在單元格中調用alert – SamYoungNY
我收到一個錯誤「類型'CollectionViewCell'不符合協議CollectionViewDelegate」打開此說...「協議需要函數'showAert(0'與類型'() - >()'... – SamYoungNY
我做了一個幾個更正到我的答案協議需要有類註釋讓委託屬性弱,而且它是你的視圖控制器將符合協議,從而提供單元格將使用的showAlert功能。關於讓細胞符合協議。 – Daniel