【问题标题】:iOs - Using container, table view and detailed view - How do I keep detailed view inside containeriOs - 使用容器、表格视图和详细视图 - 如何在容器内保留详细视图
【发布时间】:2013-12-26 10:22:35
【问题描述】:

我正在尝试创建一个非常简单的应用程序,尽管我在同一个问题上卡住了好几天... 我正在使用情节提要,我目前的设置是这样的: storyboard

我的目标是保持“项目视图控制器”中的所有内容都相同,除了容器内发生的情况。 “评论表视图”在我的容器内显示正常,但是当点击表视图中的单元格时,“评论显示视图”覆盖整个屏幕(请注意,在情节提要中,它正确继承了大小)。 这就是我的“prepareForSegue”的样子(我尝试将实例的大小固定为 tableview 大小):

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

if ([[segue identifier] isEqualToString:@"showComment"] ){
    CommentShowViewController *csvc = [segue destinationViewController];

    [[csvc view] setFrame:CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y, self.view.frame.size.width, self.view.frame.size.height)];

    NSIndexPath *path = [commentsTable indexPathForSelectedRow];
    Comment *c = [aCommentsList objectAtIndex:[path row]];
    [csvc setCurrent:c];

}
}

有什么想法可以让我完成这项工作吗?

谢谢, 乔纳森

【问题讨论】:

    标签: ios iphone uitableview storyboard containers


    【解决方案1】:

    我认为问题在于 push segue。 Push segues 需要一个UINavigationController 来执行。我猜您在图片左侧有一个UINavigationController,但未显示。当执行转场时,这是用于转场的UINavigationController

    解决此问题的一个方法是在ProjectViewControllerCommentsTableView 之间添加另一个UINavigationController

    Container -> UINavigationController ->CommentsTableView -> CommentShowViewController.

    如果您不想显示,请取消选中 IB 中的“显示导航栏”。

    【讨论】:

    • 关于这个解决方案的一个问题。我遇到了类似的问题,当我在容器和初始 tableviewcontroller 之间粘贴额外的 uinavigationcontroller 时,它抱怨我在 prepareForSegue 方法中传递的属性丢失。这是因为它试图将数据传递给导航控制器而不是目标 uitableviewController。这里是不是少了一个步骤?
    • 可能,segue.destinationViewController 将返回 UINavigationController。您需要改用segue.destinationViewController.topViewController
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-10
    • 2013-08-10
    • 1970-01-01
    • 2012-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多