Я пытаюсь создать UIPickerView, в котором есть строки описательных строк, которые описывают, что произойдет с UILabel. Выберите строку &, что изменение свойства UILabel происходит с UILabel. Я надеялся создать структуру, которая имеет свойства String и закрытия, с закрытием, принимающим и возвращающим UILabel. Затем я создаю массив этих структур, заполняя различные элементы массива различными строками для параметров и выполняя соответствующее закрытие при выборе выбранной строки. Я предполагаю, что я не правильно задумываюсь о том, как настроить или вызвать закрытие. Я надеялся, что я могу передать что-то вроде этого:Массив структур с закрывающим свойством, который примет и изменит UILabel
метки = wheelArray [строка] .rowFormula (ярлык)
Здесь пока мой код до тех пор, когда я получаю установки ошибки вверх wheelArray: импорта UIKit
class ViewController: UIViewController {
@IBOutlet weak var label: UILabel!
@IBOutlet weak var pickerControl: UIPickerView!
struct WheelStruct {
var rowText: String
var rowFormula: (UILabel) -> UILabel
}
var wheelArray = [WheelStruct(rowText: "Font Size = 20", rowFormula: {$0.font.withSize(20)}),
WheelStruct(rowText: "Font Size = 30", rowFormula: {$0.font.withSize(30)})]
Я получаю ошибку в строке: вар wheelArray ... это: «Невозможно преобразовать значение типа«UIFont в результате закрытия типа „UILabel“ я был под впечатлением, что я мог бы пройти в UILabel как $ 0, и что изменения, применяемые методами, просто вернут t он модифицировал UILabel. Я написал код, похожий на это, с более базовыми затворами, которые могли бы выполнять простые вычисления Double на struct: (Double) -> Double, с элементами, инициализированными как {$ 0 * 1.6}. Искренняя благодарность всем, кто может направить мое мышление прямо на это.
Очень полезно. Поэтому я устанавливаю rowFormula: var rowFormula: (UILabel) ->(), а также, похоже, испортил инициализацию фактической структуры. Кажется, что это работает: {$ 0.font = $ 0.font.withSize (20)}. Спасибо за решение. Я действительно наслаждаюсь вашей книгой, кстати! – Gallaugher
Спасибо! Я также хотел бы похвалить вас за подход Swifty к этому, с массивом структур, поддерживающих функции, соответствующие строкам. Очень хорошая идея. – matt