如何从我的主视图模态地呈现表格视图?

Posted

技术标签:

【中文标题】如何从我的主视图模态地呈现表格视图?【英文标题】:How can I modally present a table view from my main view? 【发布时间】:2014-03-18 03:41:24 【问题描述】:

所以我正在构建一个应用程序,并且我有一个主视图,其中大部分操作都在其中发生。我希望这样当用户向上滑动时,屏幕底部会出现一个表格视图,他们可以在其中选择某一行并返回主视图。

我以为我做对了,但是当我向上滑动时收到一条错误消息:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', 
reason: '- [UIViewController _loadViewFromNibNamed:bundle:] loaded the
"SFFavoritesViewController" nib but the view outlet was not set.'

然后我设置了视图出口,我收到了这个错误消息:

Terminating app due to uncaught exception 'UIViewControllerHierarchyInconsistency', 
reason: 'A view can only be associated with at most one view controller at a time! 
View <UITableView: 0xb385c00; frame = (0 0; 320 568); clipsToBounds = YES;
opaque = NO; autoresize = W+H; gestureRecognizers = <NSArray: 0xa38c0c0>; layer = 
<CALayer: 0xa4cf480>; contentOffset: 0, 0> is associated with
<UITableViewController: 0xa38cde0>. Clear this association before associating
this view with <SFFavoritesViewController: 0xa3819f0>.'

所以我只是在解决这个问题,或者我正在尝试做的事情是否可能,或者是什么?我有点困惑。

编辑:

这是我加载/呈现它的地方。该方法在主视图控制器SFViewController中。

- (void)swipedUp 

    SFFavoritesViewController *favoritesViewController = [[SFFavoritesViewController alloc] init];
    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:favoritesViewController];
    [self presentViewController:navController animated:YES completion:nil];

【问题讨论】:

你在使用故事板吗? 你能在你加载和展示新视图控制器的地方展示你的代码吗? 是的,我将故事板用于主视图,但我不知道如何在故事板上执行此操作,因此我尝试将 XIB 用于表格视图,同时将故事板用于我的主视图.我想可能有一种方法可以在故事板上完成这一切,所以这实际上可能应该是我的问题。 【参考方案1】:

您正在分配一个初始化您的 favouritesViewController,但您没有将视图与它关联 - 这就是您收到未设置视图出口的消息的原因。要为您的视图加载 XIB 文件,您将使用 -

SFFavoritesViewController *favoritesViewController = [[SFFavoritesViewController alloc]initWithNibName:@"favouritesView" bundle:nil];

确保您已将“文件所有者”的自定义类设置为 IB 中的 SFFavoritesViewController

另外,以模态方式呈现导航控制器似乎很不寻常——我原以为你会直接呈现 SFFavoritesViewController

[self presentViewController:favoritesViewController animated:YES completion:nil];

【讨论】:

你的方法效果很好,但我还是花了几个小时来更好地理解故事板,然后就在那里完成了所有工作。不过感谢您的建议,我想我只是通过尝试构建半故事板半 XIB 来混淆自己。 是的,故事板有点学习曲线,但最好以一种或另一种方式完成

以上是关于如何从我的主视图模态地呈现表格视图?的主要内容,如果未能解决你的问题,请参考以下文章

通过模态视图呈现详细视图控制器 [关闭]

呈现/关闭包含表格的模态视图控制器会使表格下降

呈现模态视图控制器,使其tableview一点一点下移

如何在所有其他视图之前以模态方式呈现“启动视图”?

如何关闭模态视图控制器,然后立即让呈现视图控制器呈现不同的模态视图控制器?

如何从模态视图控制器调用呈现视图控制器的方法