swift的一个问题,请教各位.

在外部定义了一个返回的方法,在按钮中药调用,最后一行报错,提示我再加一句 as [AnyObject]上去.加上去之后报错信息为:cannot convert value of type '[AnyObject]' to expected argument type '[UIViewController]'

func doBack(){

    
    let currentControllers = self.navigationController?.viewControllers;
    let newControllers:NSMutableArray=NSMutableArray(array: currentControllers!)
    newControllers.removeLastObject()

    self.navigationController?.navigationBarHidden=true;
    self.navigationController?.setViewControllers(newControllers as [AnyObject] , animated: true)
}
阅读 2.5k
1 个回答

setViewControllers 需要一个 [UIViewController]的参数, 你前面没有必要用 NSMutalbeArray,直接用一个 Array 就好了,类似下面这样:

var controllers = self.navigationController?.viewControllers ?? [UIViewController]
controllers.popLast()

self.navigationController?.setViewController(controllers, animated: true)

你的代码里不对的地方在于这里需要一个 [UIViewController], 而你给的是 [AnyObject]

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏