【发布时间】:2015-05-13 08:32:06
【问题描述】:
我正在为我的应用程序实现一个搜索接口,所以基本上我会将搜索关键字从一个 ViewController 传递到另一个 ViewController。
我已经多次完成这种类型的参数传递,但这次似乎有些奇怪。目标 ViewController 嵌入在 Navigation Controller 中。
现在代码看起来像这样。
override func prepareForSegue(segue: UIStoryboardSegue?, sender: AnyObject!) {
if (segue?.identifier == "home_to_search") {
var searchKeyword = txtSearchBarHome.text
var svc = segue?.destinationViewController as! SearchViewController;
svc.toPassSearchKeyword = searchKeyword;
//let nav = segue?.destinationViewController as! UINavigationController
//let svc = nav.topViewController as! SearchViewController
//svc.toPassSearchKeyword = searchKeyword;
}
}
我已经探索过这些问题 DestinationViewController Segue and UINavigationController swift, How do I segue values when my ViewController is embedded in an UINavigationController? 没有运气。
让我感到奇怪的是,我已经在导航控制器中嵌入了 ViewController,我可以通过 segueing 传递参数。但是,在这种情况下,它会引发 Could not cast value of type 'UINavigationController' 错误。如果我尝试上面的注释代码,它不会在那里抛出错误,而是在 AppDelegate 类中抛出错误。
【问题讨论】:
-
当我没有在 UIViewController 或 UINavigationController 的界面构建器中设置自定义类时,有时会遇到这种情况。在界面生成器中选择项目时检查第三个选项卡并检查您是否已正确设置。
-
首先,谢谢。但我从故事板上查了一下,它似乎指出了正确的课程。
-
听起来如果你推送到一个导航控制器,你可能需要让子视图控制器(你的搜索视图控制器)向它传递一个值。这有意义吗?编辑:对不起,我看到你注释掉的代码。这正是我会做的。我会调查,看看我是否能找到问题。它在 appdelegate 上抛出了什么错误?
-
我发现了问题。 UI 中缺少映射,该映射与注释代码配合良好。还有另一个问题,但似乎这个问题现在已经解决了。请将其转换为答案,以便我将其标记为已解决。非常感谢您指出正确的方向。