1
我想以编程方式在UINavigationController
堆栈中删除某些特定类型的控制器。一般删除导航堆栈内的自定义UIViewController类
工作的非通用功用:
if let navigationController = navigationController {
var controllers = [AnyObject]()
for item in navigationController.viewControllers {
if !(item is CustomViewController) {
controllers.append(item)
}
}
navigationController.viewControllers = controllers
}
不过,我试图让这个成为通用的。
func removeController<T>(controller: T.Type, navigationController: UINavigationController?) {
if let navigationController = navigationController {
var controllerArray = [AnyObject]()
for item in navigationController.viewControllers {
if !(item is T.Type) {
controllerArray.append(item)
}
}
navigationController.viewControllers = controllerArray
}
}
removeController(CustomViewController.self, navigationController)
经过多次尝试后,仍无法正常工作。
任何人都可以帮助我,谢谢。
这是行不通的。它删除'navigationController'中的所有'UIViewController'栈 – 2015-04-04 04:50:26
已更改的代码。我在Playground上测试它似乎工作。 – Abdullah 2015-04-04 05:46:52