【问题标题】:how to add UITableView to a view based application: iPhone sdk question如何将 UITableView 添加到基于视图的应用程序:iPhone sdk 问题
【发布时间】:2023-03-31 05:47:01
【问题描述】:

我有一个基于视图的应用程序,可以在所有视图之间正确导航。现在我必须向这个应用程序添加一个 UITableView,我无法这样做。

我可以添加一个 UITableView,这很好,但不知道向它添加数据源。我进行了很多搜索,发现只有基于导航的应用程序开头的示例。我已经创建了数组,并且还显示了一个空白表格视图。如何向表格单元格添加内容,我是否必须在基于导航的应用程序中覆盖这些方法?

我在 UIView 上有一个 UITableView,例如:

    UITableView * aTableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
    mainView = aTableView;

有可能吗,有什么想法吗?谢谢。

编辑:

mainView = aTableView;

修改为

[mainView addSubview:aTableView];

【问题讨论】:

    标签: iphone uiview uitableview datasource


    【解决方案1】:

    您只需设置 dataSource 属性:

    UITableView * aTableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
    aTableView.dataSource = aDataSource;
    

    请注意,您不能只将 mainView 设置为您的 tableView 并期望它工作。 mainView 是一个 ivar 或表示视图的局部变量,更改它只会更改 ivar,它实际上并不附加或分离视图层次结构中的任何视图。为此,您实际上需要使用-[UIView addSubview:] 附加它。

    【讨论】:

    • 我设置了一个我已经拥有的数据源,它没有在表格中显示为表格单元格。有什么我应该重写的方法吗?谢谢
    • 这可能是我提到的第二个问题,您没有将 tableview 添加到视图层次结构中。只设置ivar是不行的,需要添加为子视图。
    • 是的,我这样做了(添加为子视图),但我没有在单元格中得到任何东西。??
    • 对不起,我不完全清楚你说的是什么错误。现在听起来你看到一个带有空白单元格的表格视图?显然你需要在你的数据源中实现相关的 UITableViewDataSource 方法,否则什么都不会显示。如果您已经实现了这些并且没有显示任何内容,我无法在没有看到它们的情况下告诉您发生了什么。
    【解决方案2】:

    你是否在那个控制器的头文件(.h文件)中添加了UITableViewDelegate和UITableViewDataSource..

    例如,

    @interface MainViewController : UIViewController < UIITableViewDelegate,
    UITableViewDataSource > 
    {
    
    } @end
    

    这样做之后..在.m文件中,

    UITableView * aTableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)]; aTableView.dataSource = self; aTableView.delegate = self; [mainView addSubView:aTableView];
    

    【讨论】:

    • 除非你正在做一个复合布局,你最好让 MainViewController 类从 UITableViewController 下降,然后使用 -[UITableViewController initWithStyle:] 而不是 -[UIView initWithFrame:]
    【解决方案3】:

    您应该将 UITableView 添加到 UINavigationController 并将 NavigationController 的视图添加到您的视图中。比你可以使用

    [self.navigationController pushViewController:<Your DetailViewController> animated:YES]
    

    如果您不这样做,您将需要做很多工作来展示您的 DetailViewController。 ;-)

    【讨论】:

      【解决方案4】:

      除了在标题中引用源和委托之外,您还可以在编辑 XIB(而不是在代码中手动执行此操作)时将数据源和委托连接到“文件所有者”(使用连接检查器)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-29
        • 1970-01-01
        相关资源
        最近更新 更多