分层 UITableview

Posted

技术标签:

【中文标题】分层 UITableview【英文标题】:Hierarchical UITableview 【发布时间】:2011-03-23 09:39:17 【问题描述】:

在我的第一个视图中,我有一个 UITableView 有 5 条记录。在UITableView 中,单元格包含两个不同的组件。一个UILabel 是文本,另一个UILabel 显示该单元格的值。

在选择此UITableViewCell 时,用户将导航到另一个视图,在该视图中我提供了一个选择器控制器,用于更改所选行的表视图中的第二个标签的值。我在-viewWillAppear 上重新加载了UITableView 数据,但这与标签上的文本重叠了很多次。

谁能给我分层表格视图的相关示例,其中UItableViewCell 的右侧部分取决于从下一个视图中选择的选择器。

【问题讨论】:

我在 cellForRowAtIndexPath 中使用了这个。我在 UITableViewcell 中添加了这些动态标签。 CGRect lblFrame = CGRectMake(10, 5, 140, 30); UILabel *lblField =[[UILabel alloc]initWithFrame:lblFrame]; lblField.font = [UIFont systemFontOfSize:[UIFont labelFontSize]]; CGRect firstInput_Frame =CGRectMake(300, 5, 200, 30); UILabel *lblResult = [[UILabel alloc]initWithFrame:firstInput_Frame]; lblResult.font = [UIFont systemFontOfSize:[UIFont labelFontSize]]; //[txtField setBorderStyle:UITextBorderStyleNone]; lblField.text=@" "; lblResult.text = @" " 【参考方案1】:

我认为您每次重新加载表格时都会在 cell.contentView 上添加标签,但不会删除以前的标签。这就是重叠发生的原因。

尝试删除标签

- (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];
    
    for (UIView * view in cell.contentView.subviews) 
        [view removeFromSuperview];
        view = nil;
    
    // add your labels

【讨论】:

谢谢。有效。我想知道是否有任何其他最佳解决方案。你愿意我对我的问题做更多解释吗? 可能来自这个门户的一些大人物可能会给我们一些最佳解决方案。据我所知,我们不是每次都创建新的单元格,而是将可重用的单元格出列,这些单元格已经创建并添加了一些视图,所以在使用这样的单元格之前,我更喜欢清理单元格的视图然后自定义它。当我这样做时,我会释放添加的组件……例如。 [cell.contentView addSubView:myLabel]; [myLabel 发布];以免泄漏。

以上是关于分层 UITableview的主要内容,如果未能解决你的问题,请参考以下文章

如何禁用 tableview 特定行但特定行包含 uibutton。按钮必须访问

Objective-c——UI基础开发第六天(UITableView)

分层开发——软件系统的分层开发

数据仓库的分层架构与演进

弄不懂java项目的分层思想

将非分层变换应用于分层骨架?