相关疑难解决方法(0)

indentationLevelForRowAtIndexPath不缩进自定义单元格

我已tableView:indentationLevelForRowAtIndexPath在我的UITableViewController派生类中重写了该方法,如下所示:

- (NSInteger)tableView:(UITableView *)tableView indentationLevelForRowAtIndexPath:(NSIndexPath *)indexPath {
    NSDictionary* item = [self.projects objectAtIndex:indexPath.row];
    int indentationLevel = [[item objectForKey:@"indent"] intValue];
    DLog (@"Indentation Level for Row %d : %d", indexPath.row, indentationLevel);
    return indentationLevel;
}
Run Code Online (Sandbox Code Playgroud)

我最初认为这没有被调用,但这是操作员错误(错误,我的),我没有定义符号DEBUG = 1.

然而,它被称为(对我!),这是日志输出:

 -[RootViewController tableView:indentationLevelForRowAtIndexPath:] [Line 129] Indentation Level for Row 0 : 1
 -[RootViewController tableView:indentationLevelForRowAtIndexPath:] [Line 129] Indentation Level for Row 1 : 1
 -[RootViewController tableView:indentationLevelForRowAtIndexPath:] [Line 129] Indentation Level for Row 2 : 2
 -[RootViewController tableView:indentationLevelForRowAtIndexPath:] [Line 129] Indentation Level for Row …
Run Code Online (Sandbox Code Playgroud)

iphone uitableview

19
推荐指数
1
解决办法
2万
查看次数

iOS 8和layoutMargin中的自定义UITableViewCells

我的应用程序中有几个自定义UITableViewCells,主要由nibs定义.移动到iOS 8和Xcode 6时,左右边距不正确.这些单元格通常散布在具有默认单元格的表格视图中.

我做了一个示例项目,这是我正在谈论的保证金问题: 保证金问题

我能找到的唯一与此相关的是新物业layoutMargins.对于UITableViewCells,其值似乎会根据运行应用程序的设备而改变:

iPhone 6 and below - layoutMargin: {8, 16, 8, 16}
iPhone 6 Plus - layoutMargin: {8, 20, 8, 20}
Run Code Online (Sandbox Code Playgroud)

这似乎与我在标准单元格上看到的边缘对齐.但是,对于我的定制单元的内容是在细胞内contentView,它具有标准的UIView layoutMargin的{8, 8, 8, 8}.这意味着绑定到Container Margin的任何自动布局约束都会添加不正确的间距.

我发现解决这个问题的唯一方法是添加以下内容 cellForRowAtIndexPath:

cell.contentView.layoutMargins = cell.layoutMargins;
Run Code Online (Sandbox Code Playgroud)

这似乎不是一个非常好的解决方案(特别是因为我需要将它包装在iOS8的支票中以保持兼容性).

有没有人有任何想法?我觉得我必须遗漏一些东西.

objective-c uitableview ios8

11
推荐指数
2
解决办法
9387
查看次数

如何消除 UITableView 左侧的边距,而不在右侧创建间隙?

我的目标是 iOS 7 和 8,我想消除下面这个 UITableView 中图像左侧出现的边距。如果解决方案简单/优雅,我什至愿意接受仅适用于 iOS 8 的解决方案。(我只能忍受 iOS 7 上的余量,因为它会消失)。

这就是我希望它看起来像的样子:

我已经阅读了 Stack Overflow 上的许多类似问题(例如这个),或者特定于分组 UITableViews 的问题(此处和此处),但似乎无法让任何问题正常工作。

例如,如果我尝试使用 contentInset 解决问题(SO 上的常见答案):

- (void) viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    self.tableView.contentInset = UIEdgeInsetsMake(self.tableView.contentInset.top, -16, self.tableView.contentInset.bottom, self.tableView.contentInset.right);
    self.tableView.separatorInset = UIEdgeInsetsMake(0, 33, 0, 0);
}
Run Code Online (Sandbox Code Playgroud)

然后我最终得到了桌面视图右侧的间隙:

我明白为什么会发生这种情况,整个表格视图刚刚移动,如“调试视图层次结构”屏幕中所示:

但是,我尝试调整 tableView 框架大小进行补偿,但它似乎永远无法正常工作。另外,这看起来很老套;一定会有更好的办法。

作为记录,这是我的 cellForRowAtIndexPath:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    // get a cell that we can use]
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"VideoCell" forIndexPath:indexPath];

    cell.textLabel.numberOfLines = 0; …
Run Code Online (Sandbox Code Playgroud)

uitableview ios swift

5
推荐指数
3
解决办法
8057
查看次数

标签 统计

uitableview ×3

ios ×1

ios8 ×1

iphone ×1

objective-c ×1

swift ×1