как реализовать всплывающее диалоговое окно в iOS
после вычисления я хочу отобразить всплывающее окно или окно предупреждения, передающее сообщение пользователю. Кто-нибудь знает, где я могу найти дополнительную информацию об этом?
7 ответов
Ага, а UIAlertView
вероятно, это то, что вы ищете. Вот пример:
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"No network connection"
message:@"You must be connected to the internet to use this app."
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
[alert release];
если вы хотите сделать что-то более причудливое, скажем, отобразить пользовательский интерфейс в вашем UIAlertView
, вы можете подкласс UIAlertView
и поместите пользовательские компоненты пользовательского интерфейса в init
метод. Если вы хотите ответить на кнопку, нажмите после UIAlertView
появляется, Вы можете установить delegate
выше и реализовать - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
метод.
вы также можете посмотреть на UIActionSheet
.
разные люди, которые приходят к этому вопросу, означают разные вещи всплывающим окном. Я настоятельно рекомендую прочитать Временные Представления документация. Мой ответ-это в основном резюме этой и другой связанной с ней документации.
предупреждение (покажите мне пример)
предупреждения отображение заголовка и дополнительного сообщения. Пользователь должен подтвердить это (оповещение одной кнопкой) или сделать простой выбор (две кнопки оповещения), прежде чем идти дальше. Вы создаете оповещение с помощью UIAlertController
.
стоит процитировать предупреждение документации и советы о создании ненужных предупреждений.
Примечания:
- см. также Alert Views, но начиная с iOS 8 . Вы должны использовать
UIAlertController
для создания предупреждений сейчас. - iOS Основы: UIAlertView и UIAlertController (учебник)
Лист Действий (покажите мне пример)
Листы Действий дайте пользователю список вариантов. Они появляются либо в нижней части экрана, либо в всплывающем окне в зависимости от размера и ориентации устройства. Как и с предупреждениями, a UIAlertController
используется для создания листа действий. До iOS 8, UIActionSheet
использовался, но теперь the документация говорит:
важно:
UIActionSheet
устарел в iOS 8. (Обратите внимание, чтоUIActionSheetDelegate
также не рекомендуется.) Для создания и управления листами действий в iOS 8 и более поздних версиях вместо этого используйтеUIAlertController
СpreferredStyle
ofUIAlertControllerStyleActionSheet
.
Модальное Представление (покажите мне пример)
A модал вид сдержанный вид, который имеет все необходимое для выполнения задачи. Он может занимать или не занимать весь экран. Чтобы создать модальное представление, используйте UIPresentationController
С Модальные Стили Презентации.
см. также
пирог (покажите мне пример)
A пирог - это вид, который появляется, когда пользователь нажимает на что-то и исчезает при нажатии. Он имеет стрелку, показывающую элемент управления или место, откуда был сделан кран. Содержимое может быть практически любым, что вы можете поместить в контроллер представления. Вы делаете popover с UIPopoverPresentationController
. (До iOS 8, UIPopoverController
рекомендуемый метод.)
в прошлом popovers были доступны только на iPad, но начиная с iOS 8 вы также можете получить их на iPhone (см. здесь, здесь и здесь).
см. также
уведомления
уведомления звуки/вибрации, оповещения / баннеры или значки, которые уведомляют пользователя о чем-то, даже если приложение не работает на переднем плане.
см. также
- руководство по программированию локальных и удаленных уведомлений
- простые, интерактивные уведомления в iOS 8
примечание о Android тосты
In Android, a тост - это короткое сообщение, которое отображается на экране в течение короткого промежутка времени и затем автоматически исчезает, не прерывая взаимодействия пользователя с приложением.
люди, пришедшие из фона Android, хотят знать, что такое версия тоста iOS. Некоторые примеры этих вопросов он может найти здесь, здесь, здесь и здесь. Ответ:нет эквивалент тоста в iOS. Различные обходные пути, которые были представлены включают в себя:
- сделайте свой собственный с подклассом
UIView
- импорт стороннего проекта, который имитирует тост
- используйте оповещение без кнопок с таймером
однако мой совет-придерживаться стандартных опций пользовательского интерфейса, которые уже поставляются с iOS. Не пытайтесь сделать ваше приложение выглядеть и вести себя точно так же, как и версии Android. Думать о как переупаковать его так, чтобы он выглядел и чувствовал себя как приложение iOS.
С момента выпуска iOS 8 UIAlertView теперь устарел. Теперь вы будете использовать UIAlertController.
вот пример того, как это выглядит в Swift
let alert = UIAlertController(title: "Hello!", message: "Message", preferredStyle: UIAlertControllerStyle.alert)
let alertAction = UIAlertAction(title: "OK!", style: UIAlertActionStyle.default)
{
(UIAlertAction) -> Void in
}
alert.addAction(alertAction)
present(alert, animated: true)
{
() -> Void in
}
Как вы можете видеть, API позволяет нам реализовать обратные вызовы как действие, так и когда мы представляем предупреждение, которое довольно удобно!
обновлено для iOS 8.0
начиная с iOS 8.0, вам нужно будет использовать UIAlertController следующим образом:
-(void)alertMessage:(NSString*)message
{
UIAlertController* alert = [UIAlertController
alertControllerWithTitle:@"Alert"
message:message
preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction* defaultAction = [UIAlertAction
actionWithTitle:@"OK" style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action) {}];
[alert addAction:defaultAction];
[self presentViewController:alert animated:YES completion:nil];
}
где self в моем примере является UIViewController, который реализует метод "presentViewController" для всплывающего окна.
Дэвид
Для Swift 3 & Swift 4:
поскольку UIAlertView устарел, есть хороший способ отображения оповещения на Swift 3
let alertController = UIAlertController(title: NSLocalizedString("No network connection",comment:""), message: NSLocalizedString("connected to the internet to use this app.",comment:""), preferredStyle: .alert)
let defaultAction = UIAlertAction(title: NSLocalizedString("Ok", comment: ""), style: .default, handler: { (pAlert) in
//Do whatever you wants here
})
alertController.addAction(defaultAction)
self.present(alertController, animated: true, completion: nil)
удалено :
это версия swift, вдохновленная проверенным ответом:
Показать AlertView :
let alert = UIAlertView(title: "No network connection",
message: "You must be connected to the internet to use this app.", delegate: nil, cancelButtonTitle: "Ok")
alert.delegate = self
alert.show()
добавьте делегат в контроллер вида:
class AgendaViewController: UIViewController, UIAlertViewDelegate
когда пользователь нажимает на кнопку, этот код будет выполняться :
func alertView(alertView: UIAlertView, clickedButtonAtIndex buttonIndex: Int) {
}
хотя я уже написал обзор из различных видов всплывающих окон, большинство людей просто нужно предупреждение.
как реализовать всплывающее диалоговое окно
class ViewController: UIViewController {
@IBAction func showAlertButtonTapped(_ sender: UIButton) {
// create the alert
let alert = UIAlertController(title: "My Title", message: "This is my message.", preferredStyle: UIAlertController.Style.alert)
// add an action (button)
alert.addAction(UIAlertAction(title: "OK", style: UIAlertAction.Style.default, handler: nil))
// show the alert
self.present(alert, animated: true, completion: nil)
}
}
мой более полный ответ здесь.
вот версия C# в Xamarin.iOS
var alert = new UIAlertView("Title - Hey!", "Message - Hello iOS!", null, "Ok");
alert.Show();