2015-04-11 3 views
0

Я создал несколько кнопок с уникальными тегами и добавил кнопки в UIView моего проекта. Я хочу повторно получить к ним доступ, чтобы добавить кнопки в словарь видов для автозапуска.Быстрый доступ к тегам UIButton

func createButtons() { 
    for index in 0...10 { 
     var button = UIButton.buttonWithType(UIButtonType.System) as UIButton 
     button.tag = index 
     self.view.addSubview(button) 
} 

Код для создания словаря представлений для целей автоотключения.

func createDictionary() { 
    var mbd : [String:UIButton]! = [:] 

    for index in 0...10 { 
     let tmpButton = self.view.viewWithTag(index) as? UIButton 
     mbd["button" + String(index)] = tmpButton 
    } 
    return mbd 
} 

Однако, я не думаю, что приведенный выше код создает какой-либо словарь, и я не уверен, почему. Если я сменю код, который я добавляю к словарю в первом for loop, тогда все будет работать. Но я пытаюсь научиться использовать метод viewWithTag, поскольку он мне понадобится часто.

Любые рекомендации приветствуются.

+1

«viewWithTag» может быть злым, особенно когда вы используете '0' в качестве первого значения, потому что' 0' является значением по умолчанию для ВСЕХ представлений ... – zisoft

+0

Что такое лучший способ отслеживать кнопки тогда? –

+0

Начните с уникального индекса, который больше 0. Кроме того, ваш код не ясен. Вы создаете переменную 'buttonsDictionary', которая никогда не используется снова в этой функции. Вместо этого вы используете 'mbd' (это переменная класса?), Которая также возвращается из этой функции ... – zisoft

ответ

0

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

Я хотел бы предложить что-то вроде этого:

func createButtons(){ 
    var mbd : [String:UIButton]! = [:] 
    for index in 0...10 { 
     var button = UIButton.buttonWithType(UIButtonType.System) as UIButton 
     self.view.addSubview(button) 
     mbd["button" + String(index)] = button 
    } 
} 

Это решение также более производительным, в том смысле, что вы не называете петлю дважды и, так как у вас уже есть кнопки, вы не необходимо позвонить по телефону viewWithTag.

Надеюсь, это сработает для вас. Дайте мне знать, как это происходит!

+0

, к сожалению, мне нужно будет снова открыть кнопки в других функциях. –

+0

Вы можете добавить теги, просто (index + 1) * 100, или что-то в этом роде. Или вы можете сохранить словарь (установить его как свойство) и получить оттуда кнопки, когда они вам понадобятся –