UIActionSheet的使用

UIActionSheet alertview相似,同样也是弹框提示,不同的地方在于actionsheet是靠底端显示,而alertview是居中显示。


// 方法1 无代理,只有2个确定按钮
UIActionSheet *actionsheet01 = [[UIActionSheet alloc] initWithTitle:@"按钮点击后我才出现的。" delegate:nil cancelButtonTitle:@"取消" destructiveButtonTitle:@"确定" otherButtonTitles:@"知道了", nil];
// 显示
[actionsheet01 showInView:self.view];

// 方法2 无代理,有多个确定按钮
UIActionSheet *actionsheet02 = [[UIActionSheet alloc] initWithTitle:@"按钮点击后我才出现的。" delegate:nil cancelButtonTitle:@"取消" destructiveButtonTitle:@"确定" otherButtonTitles:@"知道了0", @"知道了1", @"知道了2", @"知道了3", nil];
// 显示
[actionsheet02 showInView:self.view];

// 方法3 有代理,有2个确定按钮
/*
1 设置代理为 self
2 添加协议
3 实现方法
*/
UIActionSheet *actionsheet03 = [[UIActionSheet alloc] initWithTitle:@"选择图片" delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:nil otherButtonTitles:@"相册", @"拍照", nil];
// 显示
[actionsheet03 showInView:self.view];

// 添加协议
@interface ViewController () <UIActionSheetDelegate>

@end

// UIActionSheetDelegate实现代理方法
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
    NSLog(@"buttonIndex=%ld", buttonIndex);
    
    // 方法1
//    if (0 == buttonIndex)
//    {
//        NSLog(@"点击了相册按钮");
//    }
//    else if (1 == buttonIndex)
//    {
//        NSLog(@"点击了拍照按钮");
//    }
//    else if (2 == buttonIndex)
//    {
//        NSLog(@"点击了取消按钮");
//    }
    
    // 方法2
    NSString *title = [actionSheet buttonTitleAtIndex:buttonIndex];
    BOOL isTakePhoto = [title isEqualToString:@"拍照"];
    BOOL isPhotos = [title isEqualToString:@"相册"];
    if (isTakePhoto)
    {
        NSLog(@"点击了拍照按钮");
    }
    else if (isPhotos)
    {
        NSLog(@"点击了相册按钮");
    }
    else
    {
        NSLog(@"点击了取消按钮");
    }
}

// 方法4
/*
iOS8以后出现了UIAlertController视图控制器,通过设置UIAlertController的style属性来控制是alertview还是actionsheet
*/
UIAlertController *actionSheetController = [UIAlertController alertControllerWithTitle:nil message:@"选择图片" preferredStyle:UIAlertControllerStyleActionSheet];
// 响应方法-取消
UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
        NSLog(@"点击了取消按钮");
}];
// 响应方法-相册
UIAlertAction *takeAction = [UIAlertAction actionWithTitle:@"相册" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) {
        NSLog(@"点击了相册按钮");
}];
// 响应方法-拍照
UIAlertAction *photoAction = [UIAlertAction actionWithTitle:@"拍照" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) {
        NSLog(@"点击了拍照按钮");
}];
// 添加响应方式
[actionSheetController addAction:cancelAction];
[actionSheetController addAction:takeAction];
[actionSheetController addAction:photoAction];
// 显示
[self presentViewController:actionSheetController animated:YES completion:nil];





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

番薯大佬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值