2016-10-03 2 views
-1

Я работаю с быстрым. Я этот контроллер представления:действие кнопки с несколькими параметрами

enter image description here

В этой картине от 1.1.1 до 1.2.6 все UIButton. Эта кнопка r создана программно. Теперь при каждом нажатии кнопки мне нужно передать 2 параметра. Если я рассмотрю 1.1.1 Оверлот, тогда мне нужно пройти "1.1.1" и "Overflater" в качестве параметра. Я пробовал, как показано ниже: -

ov_button.tag = "1.\(i).1" 
ov_button.addTarget(self, action: #selector("i3Vatrom.romBeskrivelse:") 
, forControlEvents: UIControlEvents.TouchUpInside) 

Но это не работает. Любая идея, как это сделать ....

+0

Ваш синтаксис '# selector' неверен. Не относится к вашему вопросу, но было бы неплохо правильно использовать '# selector'. – matt

+0

@matt да, #selector (i3Vatrom.romBeskrivelse) это правильный синтаксис. но я не получаю, как передать параметр. Есть идеи? и "tag" также не принимает строковое значение. – ripa

+0

Вы правы в отношении тега. Вот почему я предложил более сложное решение. – matt

ответ

0

Я думаю, вы должны использовать UITableView иерархии, если вы не использовали UITableView, используйте UITableView и использовать section и rowтегов свойства для управления кнопками. didSelectRowAtIndexPath функция используя для кнопка кликает.

0

Вы не можете передать ничего в функцию обработчика действий. Функция обработчика событий автоматически принимает отправителя (здесь, кнопку) в качестве параметра - и все. Трюк, таким образом, заключается в том, чтобы создать информацию о том, что вы хотите передать в сам объект кнопки, так как это будет то, что передается! В вашем случае, похоже, вы можете просто запросить title кнопки для нормального состояния и разобрать его на "1.1.1" и "Overflater".

+0

есть r почти 14 кнопка есть. Может увеличивать количество кнопок в зависимости от БД. Нужно ли создавать подкласс для каждой кнопки? – ripa

+0

На самом деле проблема в том, что я не получаю, как я присвою «1.1.1» разделу section при нажатии кнопки. Чтобы я мог использовать это в функции. – ripa

+0

да - хорошо. Большое спасибо за помощь. – ripa

0

после того, как я так много думал и думал, что нашел легкое решение этого вопроса.

ниже код кнопки для добавления цели: -

ov_button.addTarget(self, action: #selector(i3Vatrom.romBeskrivelse), forControlEvents: UIControlEvents.TouchUpInside) 

Я использовал ниже функции: -

func romBeskrivelse(sender:UIButton!) { 

    let title = sender.titleLabel!.text! 
    let titleArr = title.characters.split{$0 == " "}.map(String.init) 
    print(titleArr) // print ["1.2.1", "Overflater"] 

} 

Вот почему я думал, что я должен опубликовать ответ. может быть, это поможет другим.

+0

Хорошо, но разве это не то, что я сказал? Попросите название кнопки и проанализируйте его? – matt

+0

На самом деле я не понял ваш ответ раньше. Только сейчас я снова прочитал ваш ответ и понял, что сказал то же, что и я. Так что теперь спасибо U за ваш ответ. – ripa

+0

Добро пожаловать! Ваш код также неверен. Вы не должны запрашивать текст заголовка названия ярлыка. Попросите название _button_, как я сказал вам в своем ответе. – matt

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