iOS - UITableViewCell 被 UITabBar 覆盖

Posted

技术标签:

【中文标题】iOS - UITableViewCell 被 UITabBar 覆盖【英文标题】:iOS - UITableViewCell is covered by the UITabBar 【发布时间】:2011-12-09 04:08:51 【问题描述】:

根据下面的屏幕截图,最后一个 UITableViewCell 的一半被 UITabBar 覆盖:

我想更改为显示最后一个 UITableViewCell 的完整内容,如下所示,我该怎么做?

谢谢

更新

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

    return [shopSection count];


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

    return [cc getShopSectionRow:@"hk.xml" sectionForRow:section];


- (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];
    

    [cc getShopList:cell withXMLFile:@"hk.xml" withIndexPathSection:indexPath.section withIndexPathRow:indexPath.row];

    return cell;


- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section    
    return [cc getShopSectionTitle:section];


- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

    return 50;

【问题讨论】:

【参考方案1】:

一种方法是使用从UIScrollView 继承的属性

内容插入 内容视图与封闭滚动视图之间的距离。 @property(nonatomic) UIEdgeInsets contentInset 讨论 使用此属性可添加到内容周围的滚动区域。大小的单位是点。默认值为 UIEdgeInsetsZero。

使用该属性,您可以在 UITabBar 的顶部插入表格视图。

您可以将 UITableView 的 Frame 更改为不在 UITabBar 下方

你能告诉我们 UITableViewController 和 UITabBarController 是如何设置的吗? 那里可能有问题。


当您说under 时,您的意思是这样的:

UIViewController *viewController1 = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];
UIViewController *viewController2 = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
UITableViewController *tt = [[TableTest alloc] initWithNibName:@"TableTest" bundle:nil];
self.tabBarController = [[UITabBarController alloc] init];
self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, viewController2, tt, nil];

要将您的 UIViewControllers 放在您的 UITabBarController 中?因为我测试了该代码并且它工作正常。

因为如果您真的是在下方,例如您的 UITableViewController 不在 self.tabBarController.viewControllers 中并且位于 taBar 下方,那么您将不得不选择我原始答案中的选项之一。

【讨论】:

@CharlesYeung 好的,但这不是我所要求的,您如何填充UITableView 对您的问题没有影响,但是您如何以及何时创建它是另一回事。您是否在代码中创建 UITableView,是否在 IB 中完成,如何?什么设置?你是把它放到UITabBar,还是其他的。 我在 Xocde 4 中通过 File > New File > UITableViewController 创建了 UITableView,使用 XIB 作为用户界面。所以tableview是在IB中创建的。我只是使用 TableView 的默认设置。它也放在 UITabBar 下。 我在 StoryBoard 中添加了视图控制器。在viewDidLoad 中设置 `self.tableView.contentInset = UIEdgeInsetsMake(0, 0, 49, 0);` 后,问题得到解决。谢谢【参考方案2】:

您可以动态调整 UITableView 的高度,如类似问题中所述:UITableView partially hidden by UITabBar。

【讨论】:

【参考方案3】:

将 TableView 的高度降低 44 点,假设您已经在 loadView 中以编程方式创建了 tableView,然后 CGRectMake(0,0,320,460) 然后将 460 高度更改为 416 或在 Interface Builder xib 文件中。减少44分。 TabBar 覆盖在 tableView 的顶部,因此最后一个单元格似乎被 tabbarcontroller 重叠。

【讨论】:

以上是关于iOS - UITableViewCell 被 UITabBar 覆盖的主要内容,如果未能解决你的问题,请参考以下文章

IOS:在uitableviewcell中保持按钮状态

iOS 开发:如何在点击 UITableViewCell 时将其更改为可编辑的 UITextField?

在子类化 UITableViewCell 中重写 Func LayoutSubviews 被称为 Double

添加到 UITableViewCell 的 contentView 的 UITextField 在 Popover 中无法正确显示(iPad、iOS 4.2)

iOS:所选 UITableViewCell 的 UITextField 颜色错误

UITableViewCell 中的 UIScrollview 和维护滚动视图页面