2015-09-14 2 views
-1

Я использую СВИФТ в Xcode 6, развивать мое заявление и должно поддерживать приложение для iPhone 4 и более поздних версий ... Так что выбрали «Deploment Target» как 7.1. Говоря простыми словами, необходимо поддерживать iOS7, iOS8 И iOS9 ...UIAlertView И UIAlertController

При использовании оповещения View я наткнулся во многих местах обсуждали теперь мы должны использовать недавно представила «UIAlertController», а не старый «UIAlertView» ...

к чтению должен знать UIAlertView осуждается от КСН 8.

Но в моем случае, как я должен поддерживать для ИОС 7.1 И я не могу использовать только «UIAlertController».

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

if (objc_getClass("UIAlertController") != nil) 
{ 
    // Use UIAlertController 
} 
else 
{ 
    // Use UIAlertView 
} 

Но таким образом должен написать тот же код дважды, и действительно annoyiong ... Либо я должен создать пользовательский Alertview комбинируя оба или нужно продолжать кодирование, как это ....

но только для проверки Я использовал только UIAlertView (игнорируя UIAlertController), и приложение отлично работает даже в симуляторах ios 8 ... Но в документе говорится, что UIAlertView является устарел от iOS 8.0 ...

Так что мой вопрос:, Как узнать, что лучше всего продолжить мое приложение с этими изменениями API ... Я в порядке, если я игнорирую «UIAlertController» и работаю со старым «UIAlertView», пока не прекратит поддержку iOS7 день ... Это повлияет на мое приложение в любом случае плохо? Спасибо

+2

'UIAlertView' отлично работает с iOS 8 и 9. Это вариант - просто используйте' UIAlertView'. Как только ваше приложение отменит поддержку iOS 7, вы можете переключиться на использование только 'UIAlertViewController'. – rmaddy

+0

проверить мой ответ http://stackoverflow.com/questions/26258693/uialertview-changes-to-landscape-when-app-is-locked-in-portrait-only-in-ios8/26261120#26261120 – iAnurag

+0

Привет, rmaddy, Да вот что я и подумал. Использовать UIAlertView (игнорируя UIAlertController), поскольку в настоящее время необходимо поддерживать ios 7.1 ... Но, как говорится в документе, UIAlertView устарел от iOS 8.0, полностью испорчен ... Почему они так говорят, если он работает нормально в более поздних версиях, поскольку Что ж ? – JibW

ответ

0

Я написал обертку вокруг этих двух классов, которая использует соответствующие классы в соответствии с версией iOS.

найти здесь

https://github.com/amosavian/ExtDownloader/blob/master/Utility%2BUI.swift

показать простое использование предупреждений это:

Utility.UI.alertShow("message", withTitle: "title", viewController: self); 

чтобы показать вид действий: использовать этот код:

let buttons = [Utility.UI.ActionButton(title: "Say Hello", buttonType: .Default, buttonHandler: {() -> Void in 
     print("Hello") 
    })] 
Utility.UI.askAction("message", withTitle: "title", viewController: self, anchor: Utility.UI.AnchorView.BarButtonItem(button: uibarbuttontapped), buttons: buttons) 

В случае вы представляете действие в iPhone, оно автоматически добавит кнопку отмены. Но вы можете иметь пользовательские кнопки отмены, определив кнопку с типом «.Cancel»

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

let cancelBtn = Utility.UI.AlertButton(title: "Cancel", buttonType: .Cancel, buttonHandler: nil) 
let okBtn = Utility.UI.AlertButton(title: "OK", buttonType: .Default, buttonHandler: { (textInputs) -> Void in 
      print("OK button pressed") 
}) 
Utility.UI.askAlert("message", withTitle: "title", viewController: self, buttons: [cancelBtn, okBtn], textFields: nil) 

Как вы можете видеть, текстовые поля устанавливается на nil выше. Вы можете установить его, если хотите спросить у пользователя, например:

let cancelBtn = Utility.UI.AlertButton(title: "Cancel", buttonType: .Cancel, buttonHandler: nil) 
let okBtn = Utility.UI.AlertButton(title: "OK", buttonType: .Default, buttonHandler: { (textInputs) -> Void in 
     print("You entered" + textInputs[0]) 
    } 
}) 
let textFields = [Utility.UI.AlertTextField(placeHolder: "enter secret text here", defaultValue: "", textInputTraits: TextInputTraits.secretInput())] 
Utility.UI.askAlert("Enter password", withTitle: "title", viewController: self, buttons: [cancelBtn, okBtn], textFields: textFields) 

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

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