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 时将其更改为可编辑的 UITextField?
在子类化 UITableViewCell 中重写 Func LayoutSubviews 被称为 Double
添加到 UITableViewCell 的 contentView 的 UITextField 在 Popover 中无法正确显示(iPad、iOS 4.2)