• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

iphone - 在旋转时重绘 UITableViewCells

[复制链接]
菜鸟教程小白 发表于 2022-12-13 12:53:56 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有自定义 UITableViewCell 以及页眉和页脚。它们中的每一个都有 UITextField 在排列的列中。这些列的位置是根据 UITableView 的宽度以百分比确定的。 (也就是说,它可以在横向打开时利用更宽的屏幕)。

我遇到的问题是当我在 View Controller 加载后旋转 View 时。 UITableViewCell 仍在使用旧的定位。

搜索完 SO,我现在已经实现了 didRotateFromInterfaceOrientation: 并在此方法中重新加载了数据。

现在已经对页眉和页脚进行了排序。然而,UITableViewCells 仍然是预先旋转的格式。有没有办法强制表格完全重绘其所有内容?

编辑:我的 tableView:cellForIndexPath: 代码:

-(UITableViewCell *)tableViewUITableView *)tableView cellForRowAtIndexPathNSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"CustomCell";
    UITextField *TextField1, *TextField2, *TextField3, *TextField4, *TextField5;
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    float width = (self.tableView.frame.size.width - 68);

    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];

            TextField1 = [[UITextField alloc] initWithFrame:CGRectMake(((width*position1)+10.0), 10.0, (width*width1), 31.0)];
            TextField1.tag = 1;

            TextField2 = [[UITextField alloc] initWithFrame:CGRectMake((width*position2), 10.0, (width*width2), 31.0)];
            TextField2.tag = 2;

            TextField3 = [[UITextField alloc] initWithFrame:CGRectMake((width*position3), 10.0, (width*width3), 31.0)];
            TextField3.tag = 3;

                TextField4 = [[UITextField alloc] initWithFrame:CGRectMake((width*position4), 10.0, (width*width4), 31.0)];
            TextField4.tag = 4;

            TextField5 = [[UITextField alloc] initWithFrame:CGRectMake((width*position5), 10.0, ((width*width5)-40.0-editingWidth), 31.0)];
            TextField5.tag = 5;

            cell.accessoryType = UITableViewCellAccessoryNone;

            [cell.contentView addSubview:TextField1];
            [cell.contentView addSubview:TextField2];
            [cell.contentView addSubview:TextField3];
            [cell.contentView addSubview:TextField4];
            [cell.contentView addSubview:TextField5];

            [TextField1 release];
            [TextField2 release];
            [TextField3 release];
            [TextField4 release];
            [TextField5 release];

        } else {

            TextField1 = (UITextField *)[cell.contentView viewWithTag:1];
            TextField2 = (UITextField *)[cell.contentView viewWithTag:2];
            TextField3 = (UITextField *)[cell.contentView viewWithTag:3];
            TextField4 = (UITextField *)[cell.contentView viewWithTag:4];
            TextField5 = (UITextField *)[cell.contentView viewWithTag:5];

        }

    // Configure the cell...

    // Clear cell contents
    TextField1.text = @"";
    TextField2.text = @"";
    TextField3.text = @"";
    TextField4.text = @"";
    TextField5.text = @"";

    int sectionCount = 0;
    sectionCount = [workoutSectionsMutableArray count];

    // Repopulate cells

    NSMutableArray *cellDataArray = [self retrieveCellDataAtIndexPath:indexPath];

    TextField1.text = [[cellDataArray objectAtIndex:indexPath.row] 1];
    TextField2.text = [[cellDataArray objectAtIndex:indexPath.row] 2];
    TextField3.text = [[cellDataArray objectAtIndex:indexPath.row] 3];
    TextField4.text = [[cellDataArray objectAtIndex:indexPath.row] 4];
    TextField5.text = [[cellDataArray objectAtIndex:indexPath.row] 5];

    }

    return cell;

}

我的 didRotateFromInterfaceOrientation: 方法:

-(void)didRotateFromInterfaceOrientationUIInterfaceOrientation) fromInterfaceOrientation {

    [self.tableView reloadData];
}



Best Answer-推荐答案


当您在表格 View 上调用 reload 时,将在您的数据源上调用 tableView:cellForRowAtIndexPath: 方法。由于您已经初始化了单元格,因此不会调用 if 语句中的代码,也不会重新定位文本字段。

最简单的解决方法是将文本字段代码移出 if 语句。我不确定这是否会导致明显的性能下降。

顺便说一句,您添加到单元格的 nameTextField、resistanceTextField 等未初始化,但我认为这只是从代码传输到 stackoverflow 时发生的混淆。我假设它应该是您要添加的 TextField1、TextField2 等。

关于iphone - 在旋转时重绘 UITableViewCells,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10031935/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap