gpt4 book ai didi

ios - UIAlertController/ActionSheet 在 iPad 上崩溃,如何传递发件人?

转载 作者:可可西里 更新时间:2023-10-31 23:35:42 25 4
gpt4 key购买 nike

我想在 iPhone 和 iPad 设备上显示一个 ActionSheet。虽然我的代码在 iPhone 上可以正常工作,但在 iPad 上却不行。这样做的原因是我需要指定显示弹出窗口的位置。因此,我尝试使用 this answer 中提出的代码.我目前遇到的问题是,我不知道如何将参数 sender 传递给方法。

例如,我有一个 UITableViewRowAction,单击它时应显示 ActionSheet:

func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? {

let rowAction = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: "Action", handler:{action, indexpath in
print("Action for element #\(indexPath.row).");
self.displayActionSheet()
});

return [rowAction];
}

在我的例子中,哪个参数是 sender?我无法将 rowAction 传递给 displayActionSheet(),因为该变量是在它自己的初始值内使用的。我还尝试传递 self.displayDeleteLicencePlateActionSheet(self.items[indexPath.row]),但结果相同——我总是在 else 子句中结束守卫表达式:

guard let button = sender as? UIView else {
print("sender empty")
return
}

我还想在点击 UIBarButtonItem 时显示一个 ActionSheet:

let myButton = UIBarButtonItem(title: "FooBar", style: .Plain, target: self, action: #selector(SecondViewController.displaySecondActionSheet(_:)))

但结果相同。如何做到这一点?

最佳答案

Please refer following code to fix your issue.

TARGET_OBJECT will be your sender where from you want to show an alert.

func showAlert() {
let alert = UIAlertController(title: "Title", message: "Message text", preferredStyle: .alert)

let actionOK = UIAlertAction(title: "OK", style: .default) { (alertAction) in
}
alert.addAction(actionOK)

if let popoverController = alert.popoverPresentationController {
popoverController.sourceView = self.TARGET_OBJECT // TARGET_OBJECT will be your sender to show an alert from.
popoverController.sourceRect = CGRect(x: self.TARGET_OBJECT.frame.size.width/2, y: self.TARGET_OBJECT.frame.size.height/2, width: 0, height: 0)
}

UIApplication.shared.keyWindow?.rootViewController?.present(alert, animated: true, completion: nil)
}

请检查附件图片,它会按照您的要求出现。

enter image description here

关于ios - UIAlertController/ActionSheet 在 iPad 上崩溃,如何传递发件人?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38847051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com