【问题标题】:ios 7 uitableviewcell drawing changesios 7 uitableviewcell 绘图更改
【发布时间】:2013-09-24 09:39:23
【问题描述】:

我在 iOS 7 上遇到了自定义单元格绘图的问题(在 iOS 6 和 5 上工作正常)。

在 heightForRowAtIndexPath 上,我返回的高度小于每个部分最后一行的单元格实际高度,因为我需要最后一个单元格与下一部分的标题重叠。

Apple 似乎在 iOS 7 上进行了绘图改进或其他操作,因为只有从 heightForRowAtIndexPath 返回的高度正在绘制,所以我的单元格将在底部被切割。

任何想法都会受到赞赏。

【问题讨论】:

    标签: uitableview drawing ios7 heightforrowatindexpath


    【解决方案1】:

    嗯,这就是我会做的......

    -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
        if (indexPath.row == [_array_todo count]) {
            // last row
            return 50;
        }else{
            // not the last row
            return 80;
        }
    }
    

    还要考虑当单元格被选中时你在做什么......

    -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
        sel_path = indexPath;
        [self.tableView beginUpdates];
        [self.tableView endUpdates];
    }
    

    【讨论】:

    • 我在 iOS 7 之前的 heightForRowAtIndexPath 中做了同样的事情,但在 iOS 7 上无法正常工作。如果最后一行返回 50,则只会绘制 50 px 的高度,因此不会显示单元格的底部。
    • 您是否尝试过对 Cell 进行子类化并使用 -(bool)setSelected 方法?您可以在未选择单元格时隐藏并在选择单元格时再次显示...
    • 就像我之前说的,我已经有一个自定义单元格并且该单元格不可选择,您无法点击它。
    【解决方案2】:

    我遇到了同样的问题和情况(点击高度较低的最后一个单元格以添加更多数据)。我没有研究为什么会发生这种情况,但有些东西对我有用。我使用了来自 NSDictionary 的表格数据。它适用于 iOS6.1 及更早版本。在 iOS7 中,它导致了与您相同的错误。在 viewDidLoad 中将数据分配到单独的 NSMutableArray 解决了这个问题。所以不要在 tableview 委托方法中到处使用

    [self.data objectForKey:@"offers"]
    

    我做到了

    - (void)viewDidLoad {
        [super viewDidLoad];
        if (!tableData) tableData = [[NSMutableArray alloc] initWithArray:[self.data objectForKey:@"offers"]];
    }
    

    然后全部替换。希望对你也有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-01
      • 1970-01-01
      • 2013-10-12
      • 1970-01-01
      相关资源
      最近更新 更多