iPad - 同一屏幕中的多个UITableView

时间:2010-10-04 19:45:32

标签: objective-c iphone uitableview ipad

我从iPad编写应用程序,我必须在同一个屏幕上放置两个单独的UITableView。对于这个应用程序我不能把UITableView和divid分为两个部分,以获取原因。它必须是两个分开的。那么,在这种情况下我如何填充UITableView的行。我可以在单独的类中创建一个DataSource和Delegate,一个用于第二个UITableView的第一个UITableView和其他DataSource和Delegate类,还是让其他方法更优雅?

很多。

2 个答案:

答案 0 :(得分:4)

你可以通过几种不同的方式做到这一点。最直接的方法是使用单独的类来处理每个表视图的数据源和委托协议。

或者,您可以使用单个类作为数据源和两者的委托,并检查传递给协议方法的tableview的标识。

它看起来像这样:(我假设这个代码在你的视图控制器上。)

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    CGFloat height = 44.0; // default height
    if (tableView == self.myLeftTableView) {
        height = // Compute the cell height for the left table view.
    } else {
        height = // Compute the cell height for the right table view.
    }
    return height;
}

这可能会很快变得难看,这就是我推荐第一种方法的原因。

答案 1 :(得分:3)

是的,您可以为不同的UITableView为数据源和委托方法创建不同的类,事实上,这是在同一视图上使用多个表的最佳方法,因为此方法实现了MVC体系结构。 为此尝试这两种解决方案,其中第一种方法是在同一类中实现2个表数据源和委托方法,其次是通过使用UITableViewController或NSObject类在不同的类中实现不同的数据源和委托方法

有关详细信息,请尝试以下链接,您也可以在其中找到示例代码:

Handle more than one table in a View Part-1

Handle more than one table in a View Part-2