2016-08-24 5 views
0

Я пытаюсь создать пользовательский заголовок для alertAction в качестве AlertController с условной функцией в зависимости от состояния различных switches:Индивидуальные названия для alertAction Ios

let alert = UIAlertController(title: “Got it”, message: “Please, select:”, preferredStyle: UIAlertControllerStyle.Alert) 


name01: String = "name01" 
name02: String = "name02" 
name03: String = "name03" 

if switch01.on { 
     let action01 = UIAlertAction(title: name01, style: .Default) { (_) in } 
    } 
    if switch02.on { 
     let action02 = UIAlertAction(title: name02, style: .Default) { (_) in } 
    } 
    if switch03.on { 
     let action03 = UIAlertAction(title: name03, style: .Default) { (_) in } 
    } 



    let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel) { (_) in } 

    alert.addAction(action01)//Cannot convert value of type 'String' to expected argument type 'UIAlertAction' 
    alert.addAction(action02)//Cannot convert value of type 'String' to expected argument type 'UIAlertAction' 
    alert.addAction(action03)//Cannot convert value of type 'String' to expected argument type 'UIAlertAction' 
    alert.addAction(cancelAction)//No error 

Спасибо заранее.

+0

'action0n' недействительны вне' if swith0n.on {} '. Их не существует. => 'if swith0n.on {let action0n = ... alert.addAction (action0n)}' – Larme

ответ

0

Вам нужно создать Action из AlertController из стороны в if блок из-за боковой if block они не доступны для доступа, а также использовать, если условие, чтобы просто решить титул, как таким образом.

name01: String = "name01" 
name02: String = "name02" 
name03: String = "name03" 

if switch01.on { 
    name01 = "Title Chanhed" 
} 
if switch02.on { 
    name02 = "Title Chanhed" 
} 
if switch03.on { 
    name03 = "Title Chanhed" 
} 
let action01 = UIAlertAction(title: name01, style: .Default) { (_) in } 
let action02 = UIAlertAction(title: name02, style: .Default) { (_) in } 
let action03 = UIAlertAction(title: name03, style: .Default) { (_) in } 
alert.addAction(action01) 
alert.addAction(action02) 
alert.addAction(action03) 
alert.addAction(cancelAction) 

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

let action01 = UIAlertAction(title: name01, style: .Default) { (action:UIAlertAction) in 
    if action.title == "name01" { 

    } 
    else { 

    } 
} 
+0

он работает (я все еще не могу выдвинуть). благодаря – quin

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

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