2017-01-03 15 views
0

Программист начинающий Swift здесь и новый для переполнения стека.изменяет программно сделанный UIButton на UILabel внутри определенных текстовых полей или стеков?

Я пытаюсь сделать простой список задач/toDoPlanner, похожий на приложение напоминаний от Apple на iPhone.

Моя цель заключается в том, что, когда пользователь нажимает на UIButton в пределах определенного текстового поля (который находится в стеке), этот UIButton должен быть изменен на UILabel.

Вот как я могу сделать кнопку после того, как пользователь закончит печатать задание. Это прекрасно работает:

func textFieldShouldReturn(_ textField: UITextField) -> Bool { 
    self.view.endEditing(true) 
    if(textField == textField1) // if the first text field is pressed 
    { 
     let image = UIImage(named: "To Be Completed Circle.png") 
     button = UIButton(frame: CGRect(x: 340, y: 56, width: 30, height: 30)); 
     button.setBackgroundImage(image, for: UIControlState.normal) 
     self.view.addSubview(button) 
     button.addTarget(self, action:#selector(self.pressed), for: .touchUpInside) 

    } 
... 

А потом вот как я пытаюсь изменить UIButton, когда пользователь нажимает на нее, чтобы изменить эту кнопку в UILabel:

func pressed(textField: UITextField!) { 


    let image = UIImage(named: "Checkmark.png") 
    if(textField == textField1) 
    { 
     button.removeFromSuperview() 
     let label = UILabel(frame: CGRect(x : 340, y :56, width: 30, height: 30)) 
     label.backgroundColor = UIColor(patternImage: image!) 
     self.view.addSubview(label) 
    } 

Весь если блок не и я не слишком уверен, почему. Я предполагаю, что это связано с отдельными свойствами UIButton и UITextField.

Любая помощь приветствуется, и любые другие советы по программированию в iOS полезны!

Дайте мне знать, если вам нужно больше деталей.

+0

Вы можете легко просто сделать button.isEnabled = false для достижения аналогичного эффекта. Или скрыть и показать кнопку и/или метку соответственно. Оба варианта должны работать. – rMickeyD

+0

То, что я пытаюсь сделать, - это тип пользователя в «задаче» в первом текстовом поле. После нажатия кнопки возврата рядом с задачей появится серый круг (кнопка). Я хочу, чтобы пользователь мог нажать эту кнопку, которая изменит серый круг на серый круг с красной галочкой (меткой), означающей, что задача выполнена. Означает ли это, что я пытаюсь сделать? – brownmamba

+1

Я бы нажал кнопку и изменил изображение, связанное с кнопкой. Таким образом, каждый раз, когда они нажимают кнопку, он переключается между отмеченными и непроверенными. – rMickeyD

ответ

0

Ваш textField не связан с кнопкой, даже если вы создаете ее с помощью функции textFieldShouldReturn. Таким образом, ваша цель (self.pressed) не получает никакого параметра textField и будет равна нулю. Таким образом, ваш textField == textField1 никогда не будет правдой.

Если вы выполняете список задач, проще всего добавить каждую новую задачу в tableView. Затем вы сможете связать кнопку и метку (для имени задачи) с помощью строки &.

Было бы намного проще изменить изображение кнопки, а не удалять ее и создать UILabel на своем месте.

+0

Я получил. Есть ли какой-либо способ, хотя я могу получить textField == textField1, чтобы быть истинным через этот путь? – brownmamba

 Смежные вопросы

  • Нет связанных вопросов^_^