【问题标题】:Add "details view" to UITableView将“详细信息视图”添加到 UITableView
【发布时间】:2011-04-02 06:28:11
【问题描述】:

我有一个带有多个视图控制器的 UITabbar。其中之一是 UITableView。 tableview 存储在文件所有者是 UITableViewController 的 nib 中。

一旦选择了表格单元格,我希望表格视图显示“详细视图”(带有 UILabel 和其他一些元素的自定义视图)。我的方法是将新的详细信息视图作为子视图添加到 UITableView:

[self.view addSubView:[detailsViewController view]]

不幸的是,这并没有产生我想要的效果。作为 UITableView 的子视图,我可以滚动到添加的详细信息视图之外并查看基础表条目。 UINavigationBar 是一个选项,但由于没有更深层次的层次结构,我更喜欢带有关闭按钮的简单自定义视图。有什么建议吗?

【问题讨论】:

  • 那么,您想要一个“详细信息视图”,例如包含关闭按钮的弹出视图吗?或者你想要一个使用 UINavigationController 方法的细节视图控制器?

标签: iphone uitableview uiview


【解决方案1】:

用 UIViewController 替换你的 UITableViewController。然后将 UITableView 添加到您的视图控制器。将表视图的委托和数据源设置为视图控制器。 现在您可以在非滚动视图控制器中添加子视图,仍然拥有您的 tableview :)。

编辑: 或者,您可以在 popupview 出现时停止 tableview 滚动。

[(UIScrollView *)self.view setScrollEnabled:NO];
CGRect rect = self.popupview.frame;
rect.origin.y = [(UIScrollView *)self.view contentOffset].y;
self.popupview.frame = rect;

【讨论】:

    【解决方案2】:

    如果您只是想在用户单击特定单元格时创建一个弹出窗口(模式视图),请执行以下操作。

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    
    // If the view you want to present modally is called DetailViewController, do the following.
    
    DetailViewController *dvCon = [[dvCon alloc] initWithNibName:@"DetailViewController" bundle:nil];
    
    UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:dvCont];
    [self presentModalViewController:navigationController animated:YES];
    
    [navigationController release];
    [dvCont release];   
    
    
    }
    

    祝你好运!

    【讨论】:

    • 但是在DetailViewController中如何返回rootViewController?
    • 您需要在某处实现一个按钮,通常在 UINavigationBar 中实现(因此创建一个 UIBarButtonItem 并将其设置为 self.navigationItem.leftBarButton)并将按钮的选择器设置为关闭模式视图的方法。如果你需要,我可以用代码更新我的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-02
    • 2012-03-01
    相关资源
    最近更新 更多