2015-12-12 1 views
-1

Я пытаюсь определить, какая радиокамера выбрана в настоящее время с помощью нового шаблона кнопки Radio Xcode 7 (NSButton).Xcode v7.2 - Новые кнопки радиосвязи: Как найти выбранные

Я создал простую операцию, которая будет печатать для записи заголовка отправителя при выборе переключателя. Это делает работу:

@IBAction func radioButtonClicked(sender: AnyObject) 
    { 
    print(sender.selectedCell()!.title); 
    } 

Но то, что я действительно ищу это способность знать, какая кнопку радио выбрано в другом месте в моих кодах (в частности, на IBAction для кнопки мыши). Я пробовал:

@IBAction func uploadButtonPressed(sender: AnyObject) 
    { 
    print (radioButton.selectedCell()!.title); 
    } 

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

Любые идеи?


«наиболее» я могу получить (что не очень чистый, но работает «своего рода»), чтобы увидеть, если radioButton.cell? Состояние = 1. Это говорит мне, что выбран первый переключатель. Но это очень плохой способ кодировать это и разрешать только две опции переключателя.

if (radioButton.cell?.state == 1) 
    { 
    print ("Radio 1 Selected"); 
    } 
else 
    { 
    print ("Radio 2 Selected"); 
    } 

ответ

0

В итоге я нашел способ для этого.

установка

Сначала я переменная для хранения какой элемент был проверен (и предварительно установите значение величины Я хочу для первой кнопки радио)

var databaseUploadMethod = "trickle-add"; 

Тогда я сравниваю, чтобы увидеть название значения из выбранный пункт:

@IBAction func radioButtonClicked(sender: AnyObject) 
    { 
    if ((sender.selectedCell()!.title) == "Trickle Add") 
     { 
     databaseUploadMethod = "trickle-add"; 
     } 
    else if ((sender.selectedCell()!.title) == "Bulk Add All Now") 
     { 
     databaseUploadMethod = "bulk-add"; 
     } 
    } 

Для справки: у меня есть две кнопки радио, то первый имеет титул «струйки Добавить», а второй «Bulk Добавить все сейчас». Это значения, которые я сравниваю в инструкции if.

2

Используйте идентификатор или тег свойства в Interface Builder, чтобы различать радиокнопок как:

@IBAction func selectOption(sender: AnyObject) { 
    let id:String = sender.identifier!! 
    case "first identifier": 
     // do some stuff 
     // ... 
    default: 
     // do default stuff 
} 

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

@IBOutlet weak var firstOption: NSButton! 
@IBOutlet weak var secondOption: NSButton! 
@IBOutlet weak var thirdOption: NSButton! 

@IBAction func selectOption(sender: AnyObject) { 

    switch sender as! NSButton { 
    case firstOption: 
     print("firstOption") 
    case secondOption: 
     print("secondOption") 
    case thirdOption: 
     print("thirdOption") 
    default: 
     print("won't be called when exhaustive but must always be implemented") 
    } 
} 
Смежные вопросы