Отображение листа действий при первом запуске приложения iPhone iOS 8
Моему приложению для iPhone необходимо отображать лист действий только при первом запуске приложения. Как мне добиться этого в Swift? Спасибо за помощь.
2 ответа
Вы хотите посмотреть на UIAlertController. UIActionSheet устарела. Это очень просто в использовании.
С Obj-C вы создаете экземпляр с методом условного обращения, устанавливая стиль в actionSheet. Затем вызовите addAction для каждой "кнопки", которую вы хотите на своем листе. Вот код, из которого вы можете работать:
- (IBAction)actionButtonAction:(id)sender {
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Select an action" message:nil preferredStyle:UIAlertControllerStyleActionSheet];
[alertController addAction:[UIAlertAction actionWithTitle:@"Share Data" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
// Your activity
}]];
[alertController addAction:[UIAlertAction actionWithTitle:@"Share Plot" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
// Your activity
}]];
[alertController addAction:[UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
// User cancelled
}]];
// Present VC.
[self presentViewController:alertController animated:YES completion:^{
}];
}
У вас будет контроллер представления, который открывается при запуске приложения (когда вы впервые запускаете проект swift, в вашей раскадровке будет один контроллер представления, это корневой контроллер и исходный файл "viewController.swift", который создается в проекте подключен к нему.
от этого корневого контроллера (или любого контроллера представления, который вы используете в качестве начального контроллера представления)
Вы можете создать, настроить и представить UIAlertController, настроенный для стиля ActionSheet в методе ViewDidAppear.
Именно так
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
let userDefaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()
let firstTimeLoggingIn: Bool? = userDefaults.objectForKey("firstTimeLogin") as? Bool
if (firstTimeLoggingIn == nil) {
userDefaults.setBool(true, forKey: "firstTimeLogin")
actionSheetForFirstLogin()
}
}
func actionSheetForFirstLogin() {
let actionSheet: UIAlertController = UIAlertController(title: "the title", message: "the message", preferredStyle: .ActionSheet)
let callActionHandler = { (action:UIAlertAction!) -> Void in
let alertMessage = UIAlertController(title: action.title, message: "You chose an action", preferredStyle: .Alert)
alertMessage.addAction(UIAlertAction(title: "OK", style: .Default, handler: nil))
self.presentViewController(alertMessage, animated: true, completion: nil)
}
let action1: UIAlertAction = UIAlertAction(title: "action title 1", style: .Default, handler:callActionHandler)
let action2: UIAlertAction = UIAlertAction(title: "action title 2", style: .Default, handler:callActionHandler)
actionSheet.addAction(action1)
actionSheet.addAction(action2)
presentViewController(actionSheet, animated: true, completion:nil)
}
}
это также отделяет обработчик действий для листа действий, поэтому вы можете увидеть, как создавать их независимо и добавлять их. В этом примере я только создал один и проверил заголовок действий, чтобы отобразить предупреждение, которое будет отображаться на основе выбора; Однако вы всегда можете создать отдельные действия.
редактировать
Я добавил NSUserDefaults для обработки сценария первого входа