2016-08-10 2 views
0

На данный момент я устанавливаю мои кнопки для моей клавиатуры со следующим кодом:Как подключить UIButton к действию, используя только интерфейс строитель

func setupButtons() { 
    for subview in self.view.subviews { 
     if subview.isKindOfClass(UIButton) { 
      setupButton(subview as! UIButton) 
     } 
    } 
} 

func setupButton(btn: UIButton) { 
    btn.addTarget(self, action: #selector(KeyboardViewController.keyPressed(_:)), forControlEvents: .TouchUpInside) 
} 

Но в любом случае я могу пропустить это и все мишени внутри компоновщик компоновки, чтобы я мог сэкономить немного времени, перебирая кнопки на каждом экране клавиатуры?

+0

Вы спрашиваете, как добавлять действия к кнопкам исключительно в Interface Builder, а не программно? – Frankie

+0

Да. Является ли это возможным? –

+0

Вы можете сделать это легко, но только если вы создадите 'setupButtons' в' @ IBOutlet'. Вы не сделали этого ... – matt

ответ

1

Конечно, есть два способа подключения объектов к Interface Builder, через выходы и действия.

class ViewController: UIViewController { 

    @IBOutlet weak var doStuffButton: UIButton! 

    @IBAction func doStuff(sender: UIButton) { 
     //do stuff 
    } 
} 

После добавления этого кода в конструктор интерфейса и нажмите на контроллер вида для этого класса.

Нажмите на connections inspector

Под точек теперь вы увидите doStuffButton, однако по окружности справа от этого, нажмите кнопку управления и щелкните мышью и перетащите его на кнопку вы хотите подключить его и выпустить. Настройка разрешений не требуется для включения действий. Я просто хотел показать это вам.

В этом же окне вы также увидите принятые действия и метод doStuff:. Нажмите и перетащите то же самое и отпустите кнопку. Выберите тип события, для которого вы хотите обработать это действие (нормальное нажатие внутри).

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

enter image description here

Есть много других вариантов того, как сделать это, но я думал, что это будет получить вам быстрый старт.

+0

Спасибо Фрэнки! :) –

0

Если вы пытаетесь спросить, как это сделать, не кодируя ничего, просто перейдите в окно помощника редактора Xcode и Ctrl-drag от вашей кнопки до файла класса контроллеров. Затем, когда появится всплывающее окно, измените выход на действие и дайте ему имя метода. Это создает для вас метод IBAction.

Но на самом деле то, как вы делаете это сейчас с циклом for, намного лучше. Особенно, если у вас много кнопок.

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