2014-10-13 2 views
0

Я новый разработчик IOS с небольшим опытом работы в Objective C, но теперь я начинаю учиться быстро.Работа с UIAlertView в swift

Я делаю тестовое приложение с кучей различных базовых функций, чтобы я мог привыкнуть к языку, и я сталкиваюсь с некоторыми проблемами с AlertViews. Я пытаюсь добавить функции в AlertView (не AlertController). У меня есть код для этого, и я не получаю никаких erros, но функция просто не работает, когда я нажимаю кнопку в Alert View. Вот код:

@IBAction func Alert(sender: UIButton) { 

    var alertView:UIAlertView = UIAlertView() 
    alertView.title = "Alert!" 
    alertView.message = "Greg is Cool" 
    alertView.delegate = self 
    alertView.addButtonWithTitle("OK") 
    alertView.addButtonWithTitle("Okay") 

    alertView.show() 

} 


func alert(alertView: UIAlertView!, clickedButtonAtIndex buttonIndex: Int) { 
    switch buttonIndex { 

    default: 
     if (alertView.tag == 1) { 
     NameLabel.text = "I get it!" 
    } 
} 
} 

Я также пытаюсь узнать, как сделать TextField доступны в AlertView. Однако у меня нет кода для этой функции.

Пожалуйста, дайте мне знать, если у вас есть идея о том, как заставить эти функции работать. Благодаря!

+0

Я Протянувшись свой IBAction и она работала хорошо для меня , Обязательно подключите его к своей кнопке в раскадровке. –

+0

Я связал действие в storybaord, потому что появляется предупреждение, просто действие не работает –

ответ

0
  1. Вы не установили тег alertView. так if (alertView.tag == 1) будет ложным

  2. Вы можете установить alertViewStyle = PlainTextInput, то он будет иметь TextField

О alertViewStyle, проверить документ вы получите:

enum UIAlertViewStyle : Int { 
    case Default 
    case SecureTextInput 
    case PlainTextInput 
    case LoginAndPasswordInput 
} 

Так изменения, как показано ниже, ваш код должен работать:

@IBAction func Alert(sender: UIButton) { 
var alertView:UIAlertView = UIAlertView() 
alertView.title = "Alert!" 
alertView.message = "Greg is Cool" 
alertView.delegate = self 
alertView.addButtonWithTitle("OK") 
alertView.addButtonWithTitle("Okay") 


alertView.tag = 1 
alertView.alertViewStyle = .PlainTextInput 

alertView.show() 

} 

func alert(alertView: UIAlertView!, clickedButtonAtIndex buttonIndex: Int) { 

switch buttonIndex { 

default: 
    if (alertView.tag == 1) { 
    NameLabel.text = "I get it!" 
} 

} 
} 
+0

Как я могу исправить первую проблему, чтобы заставить действие работать, когда я нажимаю кнопку?И этот код не работает для меня, чтобы получить textField ... Где я должен разместить этот код? –

0

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

+0

Я связал действие в рассказе, потому что появляется предупреждение, просто действие не работает –

0

Из класса UIAlertView:

// UIAlertView is deprecated. Use UIAlertController with a preferredStyle of UIAlertControllerStyleAlert вместо КСН 8, вы можете сделать это:

var alert = UIAlertController(title: "Alert", message: "Message", preferredStyle: UIAlertControllerStyle.Alert) 
alert.addAction(UIAlertAction(title: "Click", style: UIAlertActionStyle.Default, handler: nil)) 
self.presentViewController(alert, animated: true, completion: nil) 

Теперь UIAlertController это единственный класс для создания и взаимодействия с тем, что мы знали, как UIAlertViews и UIActionSheets на iOS 8.

Редактировать: Для обработки действий:

alert.addAction(UIAlertAction(title: "Ok", style: .Default, handler: { action in 
    switch action.style{ 
    case .Default: 
     println("default") 

    case .Cancel: 
     println("cancel") 

    case .Destructive: 
     println("destructive") 
    } 
})) 
0

Метод, который вы использовали, является pre-iOS 8. Но я покажу вам, как я это делаю независимо.

Добавьте эту функцию:

func alertView(alertView: UIAlertView!, clickedButtonAtIndex buttonIndex: Int) { 
    var title: NSString = alertView.buttonTitleAtIndex(buttonIndex) 
    if title.isEqualToString("OK") { 
     NameLabel.text = "I get it!" 
    } 
} 

Если вы хотите сделать это современный способ, то это способ сделать это:

var alert = UIAlertController(title: "Alert!", message: "Greg is cool", preferredStyle: UIAlertControllerStyle.Alert) 
    alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler:{ (ACTION :UIAlertAction!)in 
     NameLabel.text = "I get it!" 
    })) 
    alert.addAction(UIAlertAction(title: "Okay", style: UIAlertActionStyle.Cancel, handler: nil)) 

    self.presentViewController(alert, animated: true, completion: nil) 
Смежные вопросы