我们能否处理错误“无法将 BOOL 类型的值转换为预期的参数 UIiew”
Posted
技术标签:
【中文标题】我们能否处理错误“无法将 BOOL 类型的值转换为预期的参数 UIiew”【英文标题】:Can we handle the error "Cannot convert the value of type BOOL to expected argument UIiew" 【发布时间】:2016-11-25 09:28:25 【问题描述】:我厌倦了试图弹出视图控制器并搜索每个地方,也尝试过自己。这个问题又来了,我很困惑下一步该怎么做
func showPopover(base: UIView)
let storyboard : UIStoryboard = UIStoryboard(name: "Messaging", bundle: nil)
if let viewController = storyboard.instantiateViewControllerWithIdentifier("PreferencesViewController") as?PreferencesViewController
let navController = UINavigationController(rootViewController: viewController)
navController.modalPresentationStyle = .Popover
if let pctrl = navController.popoverPresentationController
pctrl.delegate = self
pctrl.sourceView = base
pctrl.sourceRect = base.bounds
self.presentViewController(navController, animated: true, completion: nil)
我在从 UIBarButtons 中单击的任一操作中调用此方法
func optionChoosed(hello:Bool)
if (hello)
self.showPopover(hello)
它说 无法将类型 BOOL 的值转换为预期的参数 UIiew.. 我们可以解决这个问题还是我走错了方向。
【问题讨论】:
这里变量hello
是Bool
类型。您需要将View
传递给方法showPopover
。
你需要使用UIPopoverPresentationControllerDelegate
方法来显示popOver
。
你能编辑我的代码并评论你想说什么吗?
好的,我将提供我的代码。你想在iPhone
或iPad
中显示弹出框吗?
错误很明显——你在编码时犯了一个逻辑错误。不要将Bool
变量传递给showPopover
函数,而是传递对UIView
的引用。您正在使用这个UIView
作为源视图和源矩形。这显然不能是Bool
。
【参考方案1】:
class SHNewStylesViewController: UIViewController, UIPopoverPresentationControllerDelegate
var popover: UIPopoverPresentationController? = nil
//MARK: - View life cycle
override func viewDidLoad()
super.viewDidLoad()
override func didReceiveMemoryWarning()
super.didReceiveMemoryWarning()
//MARK: - IBActions
@IBAction func showPopover(sender: AnyObject)
let genderViewController = storyboard!.instantiateViewControllerWithIdentifier("ViewControllerTwoIdentifier") as! ViewControllerTwo
genderViewController.modalPresentationStyle = UIModalPresentationStyle.Popover
genderViewController.preferredContentSize = CGSize(width: 200.0, height: 400.0) // To change the popover size
popover = genderViewController.popoverPresentationController!
popover!.barButtonItem = sender as? UIBarButtonItem
popover!.delegate = self
presentViewController(genderViewController, animated: true, completion:nil)
//MARK: - Popover Presentation Controller Delegate methods
func adaptivePresentationStyleForPresentationController(controller: UIPresentationController) -> UIModalPresentationStyle
return UIModalPresentationStyle.None
在我的例子中,showPopover 是我的条形按钮项目的IBAction
。你可以在showPopover
方法中的任何你想要的地方编写代码。
谢谢:)
【讨论】:
以上是关于我们能否处理错误“无法将 BOOL 类型的值转换为预期的参数 UIiew”的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET 黄屏死机 (YSOD) 能否按需生成或捕获?
我们能否直接从服务层抛出ResponseStatusException而不会在控制器级别抛出自定义异常和处理?