Я пытаюсь использовать ActionSheetStringPicker в своем приложении iOS Swift. Я не могу понять, как использовать готовый блок или действие успеха. Вот мой код:
func pickerDone()
{
println("Here I am!")
}
override func touchesBegan(touches: NSSet, withEvent event: UIEvent)
{
var selected = 0
let done: ActionStringDoneBlock = {(picker: ActionSheetStringPicker!, selectedIndex: NSInteger!, selectedValue : AnyObject!) in
println(selectedIndex)
}
var touch = touches.anyObject() as UITouch
if touch.view is UILabel
{
var picker = ActionSheetStringPicker(title: "Select an attachment", rows: attachmentsList, initialSelection: 0, doneBlock: done, cancelBlock: nil, origin: touch.view)
picker.showActionSheetPicker()
}
}
Элемент, реагирующий на прикосновение, представляет собой UILabel с именем attachmentLabel, текст которого я хотел бы изменить в зависимости от выбора, сделанного в ActionSheetStringPicker. Однако, когда я попадаю внутрь готового блока, я получаю ошибку EXC_BAD_ACCESS всякий раз, когда пытаюсь получить доступ к чему-либо, кроме трех переданных параметров. И если я пытаюсь использовать функцию pickerDone в качестве успешного действия, она вызывается только в том случае, если Я определяю функцию так, чтобы она не принимала никаких параметров.
Все примеры, которые я могу найти для готового блока, распечатывают только значения параметров. Мне нужен пример того, как получить информацию из средства выбора обратно в мой пользовательский интерфейс.
Я пытался выяснить, как захватить переменные для использования в моем закрытии, но я получаю ту же ошибку EXC_BAD_ACCESS. Я попытался захватить местного, но это не сработало:
var selected = 0
let done: ActionStringDoneBlock = {(picker: ActionSheetStringPicker!, selectedIndex: NSInteger!, selectedValue : AnyObject!) in
selected = selectedIndex
}
Итак, я попытался захватить себя, но это тоже не работает:
let done: ActionStringDoneBlock = {[weak self](picker: ActionSheetStringPicker!, selectedIndex: NSInteger!, selectedValue : AnyObject!) in
self?.attachmentLabel.text = self?.attachmentsList[selectedIndex]
return
}