我想知道如何用这样的按钮来创建一个弹出框。

答:

UIActionSheet * actionSheet = [[UIActionSheet alloc] initWithTitle: nil 
                                                          delegate: self
                                                 cancelButtonTitle: nil 
                                            destructiveButtonTitle: nil 
                                                 otherButtonTitles: @"Take Photo",
                                                                    @"Choose Existing Photo", nil];

[actionSheet showFromRect: button.frame inView: button.superview animated: YES];

委托对象类中的其他地方..。

-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
    if (buttonIndex == 0) {
         // take photo...
    } 
    else if (buttonIndex == 1) {
         // choose existing photo...
    }
}
athletesssathletesss提问于
NAMIHEAPTX4869回答于

这是一个UIActionSheet.在iPhone上,它从底部进入。在iPad上,它出现在一个弹出框中。

假设你是按下按钮就这样做的:

UIActionSheet * actionSheet = [[UIActionSheet alloc] initWithTitle: nil 
                                                          delegate: self
                                                 cancelButtonTitle: nil 
                                            destructiveButtonTitle: nil 
                                                 otherButtonTitles: @"Take Photo",
                                                                    @"Choose Existing Photo", nil];

[actionSheet showFromRect: button.frame inView: button.superview animated: YES];

在iOS 8+中,您应该使用新的UIAlertController类

UIAlertController * alertController = [UIAlertController alertControllerWithTitle: nil
                                                                          message: nil
                                                                   preferredStyle: UIAlertControllerStyleActionSheet];
[alertController addAction: [UIAlertAction actionWithTitle: @"Take Photo" style: UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
    // Handle Take Photo here
}]];
[alertController addAction: [UIAlertAction actionWithTitle: @"Choose Existing Photo" style: UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
    // Handle Choose Existing Photo here
}]];

alertController.modalPresentationStyle = UIModalPresentationPopover;

UIPopoverPresentationController * popover = alertController.popoverPresentationController;
popover.permittedArrowDirections = UIPopoverArrowDirectionUp;
popover.sourceView = sender;
popover.sourceRect = sender.bounds;

[self presentViewController: alertController animated: YES completion: nil];

或者在Swift上:

let alertController = UIAlertController(title: nil, message: nil, preferredStyle: .ActionSheet)
alertController.addAction(UIAlertAction(title: "Take Photo", style: .Default, handler: { alertAction in
    // Handle Take Photo here
    }))
alertController.addAction(UIAlertAction(title: "Choose Existing Photo", style: .Default, handler: { alertAction in
    // Handle Choose Existing Photo
    }))
alertController.modalPresentationStyle = .Popover

let popover = alertController.popoverPresentationController!
popover.permittedArrowDirections = .Up
popover.sourceView = sender
popover.sourceRect = sender.bounds

presentViewController(alertController, animated: true, completion: nil)

回答过的其他问题

实时音视频产品优势是什么?

相比于传统音视频,腾讯音视频具有以下优势 1、支持小程序音视频 2、全平台互通能力 3、极低的开发成本 4、优良的画面品质 5、稳定的网络通信 6、可靠的数据安全 这可以给用户带来很大的便利和很好的用户体验。可以很方便地远程建立起联系。结合腾讯的其他产品可以应用在许多的场合,比如...... 展开详请

直播答题怎样才能才能延长自身的生命周期?

[图片] 我也玩直播问答好久了,纵观这几个平台,无论是冲顶大会,花椒直播还是芝士超人,对于用户体验来说其本上差别不大。我认为它延长自身生命周期的最显著方法就是聘请个性化的主持人,这也是未来的一个可预见的发展趋势,现在已经有直播答题软件依靠明星出题人吸引大众的眼球。仔细想一...... 展开详请

部署生产环境,上传正式代码时,显示网络413错误?

为什么在这个mozilla JS开发工具中使用bind返回“native code”?

你需要理解的是该.bind()方法实际上返回一个函数,稍后可以使用该绑定的上下文。 你必须调用返回的函数来查看你想要的输出 要么 你可以使用.call()或.apply()立即执行它们。 让我们试着看看绑定实际上是如何工作的 Function.prototype.myBin...... 展开详请

为什么网站电脑能访问,手机却访问不了?

SVG中文本的背景颜色如何设置?

这是不可能的,SVG元素没有background-... 的表现属性。 为了模拟这种效果,你可以在text属性后面fill="green"或者类似的东西(过滤器)上绘制一个矩形。使用JavaScript你可以做到以下几点: var ctx = document.getEleme...... 展开详请

关于作者

所属标签

扫码关注云+社区

领取腾讯云代金券