UINavigationController 代码推送到 UIViewController 无法正常工作

Posted

技术标签:

【中文标题】UINavigationController 代码推送到 UIViewController 无法正常工作【英文标题】:UINavigationController code push to UIViewController not working correctly 【发布时间】:2012-12-10 15:11:57 【问题描述】:

当我通过另一个具有相同 UINavigationController 的 UIViewController 的代码推送到 UIViewController 时遇到问题。

注释和假设:

    我使用 IB 创建了所有 UIViewController,但想使用代码在它们之间进行推送。 两个 UIViewControllers 都包含 UITableViews:第一个选择搜索条件,第二个显示结果。 “LT”在我的班级名称中代表排行榜。

我的 UINavigation 控制器中有三个类:

    LTMasterNavController - UINavigationController 类型 - 拥有所有后续视图控制器的属性和结果。一旦 LTOverviewViewController 生成了结果,LTResultsViewController 就会从这里检索结果。 LTOverviewViewController - UIViewController 类型包含一个 UITableView。用于选择要在 LTResultsViewController 中显示的过滤器。 LTResultsViewController - UIViewController 类型,包含一个 UITableView。用于显示来自 LTOverviewViewController 的结果

请在下面的 Dropbox 链接中找到我的代码: https://www.dropbox.com/sh/9m37y4f1gws99lf/VGNloaLSVO

当在 LTOverviewViewController 中按下“显示排行榜”按钮时,我希望程序从过滤器中获取结果,然后立即推送到 LTResultsViewController。

使用此代码,它会推送到 LTResultsViewController,但视图似乎不包含任何内容。它是黑色的,没有 UITable 视图,您无法选择任何内容。

在测试/调试中,我在 LTOverviewViewController 中创建了另一个名为“Push to Results”的按钮,并将其连接到 LTResultsViewController 作为 IB 中的推送操作。当按下“显示排行榜”按钮和“推送到结果”按钮时,它工作得很好,但是我希望它在没有用户按下第二个按钮的情况下发生。几天来一直坚持这一点,所以任何帮助将不胜感激!

非常感谢, 詹姆斯

【问题讨论】:

【参考方案1】:

使用故事板和转场,这相当简单。在情节提要中,单击要在其之间传输数据的 UIViewController 之间的连接,我猜是 LTOverviewViewController 和 LTResultsViewController 之间的连接,并给 segue 一个标识符名称:说 ResultsSegue。

现在,在 LTOverViewController 中,你需要实现这个方法:

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

在此方法中,您将识别 segue 名称和destinationViewController 并传递您希望新视图控制器拥有的数据。这是一个例子:

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

    if ([[segue identifier] isEqualToString:@"ResultsSegue"])
    
        LTResultsViewController *viewController = [segue destinationViewController];
        [viewController setData:self.data];
    

当 storyboard 想要使用这个特定的 segue 时,这个方法会在移动到新的 viewController 之前被调用和执行。

【讨论】:

这很完美!我不知道你可以命名一个 segue 然后用那个名字来称呼它!非常感谢!詹姆斯

以上是关于UINavigationController 代码推送到 UIViewController 无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

IOS 两种控制器的使用,纯代码UITabBarController 与 UINavigationController

UISearchBar、UITableViewController 和 UINavigationController,在执行本机代码时得到一个 SIGSEGV

iOS:如何在现有 UINavigationController 中打开另一个 UINavigationController?

UINavigationController 风格

如何过渡出父 UINavigationController

UINavigationController 疯了吗?