[ iOS ] UIAlertController 確認對話框


確認視窗 Alert 使用方法





1.
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"注意!" message:@"您確定要將這筆資料從我的最愛中移除嗎?" preferredStyle:UIAlertControllerStyleAlert];
2.
UIAlertAction *ok = [UIAlertAction actionWithTitle:@"移除" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) {
            self.navigationItem.rightBarButtonItem = off;
            
            [favorite removeObject:self.item];
            
            [[NSUserDefaults standardUserDefaults] setObject:favorite forKey:@"FAVORITE"];
            [[NSUserDefaults standardUserDefaults] synchronize];
        }];
UIAlertAction *cancel = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil];
3.
[alert addAction:ok];
[alert addAction:cancel];

4.
[self presentViewController:alert animated:YES completion:nil];

5.寫入NSUserDefault

因為UIAlertAction 最後的handler是異步方法
在使用者點選後才會執行,必須把寫入方法寫在執行後才寫入。不然畫面不會刷新

CODE:
if (sender == off) { ///加入我的最愛
        self.navigationItem.rightBarButtonItem = on;
        
        [favorite addObject:self.item];
        
        [[NSUserDefaults standardUserDefaults] setObject:favorite forKey:@"FAVORITE"];
        [[NSUserDefaults standardUserDefaults] synchronize];
    
    } else { ///從我的最愛移除
        
        UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"注意!" message:@"您確定要將這筆資料從我的最愛中移除嗎?" preferredStyle:UIAlertControllerStyleAlert];
        
        UIAlertAction *ok = [UIAlertAction actionWithTitle:@"移除" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) {
            self.navigationItem.rightBarButtonItem = off;
            
            [favorite removeObject:self.item];
            
            [[NSUserDefaults standardUserDefaults] setObject:favorite forKey:@"FAVORITE"];
            [[NSUserDefaults standardUserDefaults] synchronize];
        }];
        
        UIAlertAction *cancel = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil];
        
        [alert addAction:ok];
        [alert addAction:cancel];
        
        [self presentViewController:alert animated:YES completion:nil];

    }

留言