#ios #swift #swift-playground #ipad-playgrounds
Вопрос:
Я хочу создать игру «Правда или вызов» в swift playground для iPad, но я не могу создать кнопку, которая печатала бы более одного вызова или правды. Я попытался создать var, в котором есть все dare, а затем я поместил его в (объект NSObject ответчика класса), var выглядит так( var dare = [«dare 1», «dare 2″…]), но он выдает мне ошибку, в которой говорится (не удается присвоить значение типа «[Строка]» типу «Строка»), и 2-я вещь, которую я попытался (пусть dare = [«dare 1», «dare 2″…]), которая дала мне ту же ошибку. мой код выглядит так
import PlaygroundSupport
import UIKit
let View = UIView()
View.backgroundColor = .blue
let lbl = UILabel(frame: CGRect(x: 210, y: 329, width: 200, height: 50))
lbl.text = "hi!"
View.addSubview(lbl)
lbl.textColor = .white
let button = UIButton(frame: CGRect(x: 67, y: 500, width: 100, height: 50))
button.backgroundColor = .green
button.setTitle("button", for: UIControl.State.selected)
button.layer.cornerRadius = 10
View.addSubview(button)
let button1 = UIButton(frame: CGRect(x: 300, y: 500, width: 100, height: 50))
button1.backgroundColor = .red
button1.setTitle("button1", for: UIControl.State.selected)
button1.layer.cornerRadius = 10
View.addSubview(button1)
class Responser: NSObject
{
//Method to be called
@objc func printname()
{
lbl.text = "1"
}
}
let responder = Responser()
button.addTarget(responder, action: #selector(Responser.printname), for:.touchUpInside)
class Responser1: NSObject
{
//Method to be called
@objc func printname()
{
lbl.text = "2"
}
}
let responder1 = Responser1()
button1.addTarget(responder1, action: #selector(Responser1.printname), for:.touchUpInside)
PlaygroundPage.current.liveView = View
Комментарии:
1. Хотя вы находитесь на игровой площадке, могу ли я предложить вам немного поиграть с размещением ваших представлений и переменных в структурах или классах? Это может уже навести кое-какие порядки для вас?
2. Сообщение об ошибке сообщает вам, что вы назначаете массив типа String, в то время как ожидается, что он получит только одну строку. Откуда у вас эта ошибка? Не удается найти
dares
массив в вашем коде. Еще один вопрос: почему вы создали два разныхResponder
класса ?3. Я создал два ответчика для двух кнопок.
4. Вы могли бы создать другой метод в том же классе или, если это возможно, добавить аргумент к
printName
методу и передать то, что вы хотите распечатать. Это было бы намного эффективнее. @Иво5. Ошибка появляется на этикетке.text = смеет ‘’ var смеет = [«смеет 1», «смеет 2», «смеет 3»]‘’. ‘’ ответчик класса: NSObject { @objc функция printname() { lbl.text = смеет } } ‘’