TableView上的标签栏?

时间:2009-09-09 20:22:21

标签: iphone cocoa-touch

期待你的建议!

我有一个TableView(通过I.B创建的分组表)。当代码使用Navigation Controller视图执行时,我在表上显示一些数据。我想在我的表视图中添加一个“Tab Bar”,无论是通过I.B(或)以编程方式。例如:启动内置“时钟”应用程序,您可以在其中看到一个标签栏,它在单个视图中可以选择“世界时钟”,“闹钟”,“秒表”和“计时器”。 我尝试通过在I.B中添加“Tab Bar”来创建相同的内容,但Tab Bar的拖放不会出现在Table View中。我不知道为什么。 (或)其他我甚至尝试以编程方式在表视图中创建它,但没有成功。这不可能吗? 有人可以帮我指出代码或样品吗?

感谢。

CALVE /

3 个答案:

答案 0 :(得分:2)

我认为你采取了错误的做法。在表格视图中添加标签栏是错误的。您应该从标签栏应用程序开始,并向该标签栏应用程序添加导航控制器。在导航控制器中,您可以添加一个带有表格的视图。

答案 1 :(得分:2)

您需要将其添加到父控制器的视图中。此外,tempView元素也不是必需的。

E.g。如果应用程序使用导航控制器作为主视图控制器,您可以将其添加到自定义UITableViewController类:

- (void)viewDidLoad
{
    [super viewDidLoad];    UITabBar* tabBarView = [[UITabBar alloc] initWithFrame:CGRectMake(0, 430, 320, 50)];
    NSArray* tabbarItems = [[NSArray alloc] initWithObjects:[[UITabBarItem alloc] initWithTitle:@"Item1" image:nil tag:1],[[UITabBarItem alloc] initWithTitle:@"Item2" image:nil tag:2],[[UITabBarItem alloc] initWithTitle:@"Item3" image:nil tag:3], nil];
    tabBarView.items = tabbarItems;
    [self.navigationController.view addSubview:tabBarView];
}

答案 2 :(得分:0)

尝试创建UIView并向该视图添加tabBar,现在将此视图放在表中。我试过这个和它的工作,

所以你的函数cellForRowAtIndexPath看起来像这样

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }

    UIView *tempView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 50)];
    UITabBar* tabBarView = [[UITabBar alloc] initWithFrame:CGRectMake(0, 0, 320, 50)];
    NSArray* tabbarItems = [[NSArray alloc] initWithObjects:[[UITabBarItem alloc] initWithTitle:@"Item1" image:nil tag:1],[[UITabBarItem alloc] initWithTitle:@"Item2" image:nil tag:2],[[UITabBarItem alloc] initWithTitle:@"Item3" image:nil tag:3], nil];
    tabBarView.items = tabbarItems;
    [tempView addSubview:tabBarView];

    [cell addSubview:tempView];


    return cell;
}

所以现在不是使用默认单元格,而是可以根据需要自定义它。我也没有考虑内存释放问题,所以你可能需要更新代码来释放分配的内存。