UITableViewCells 在编辑模式下更改大小

发布于 2024-10-20 23:49:50 字数 256 浏览 4 评论 0原文

我想在编辑模式下更改 UITableviewCell 的外观,就像苹果地址簿中显示的那样。单元格应该调整大小,我将添加 UITextFields 作为子视图。 我知道要更改单元格的外观,您必须覆盖单元格中的 LayoutSubviews 函数。我尝试这样做,并且得到了一些有趣的效果并调整了大小:-)

我已经寻找了一段时间在网上找到一些提示,但我没有找到。 如果有人可以提供一些提示如何正确执行此操作?教程或代码的链接就可以了。

谢谢 涡流

I want to change the appearance of an UITableviewCell in edit mode like it is shown in the address book from apple. The cell should resize and i will add UITextFields as subviews.
I know that to change appearance of a cell you have to overwrite the LayoutSubviews function in the cell. I tried to do that and i had some funny effects and resizing :-)

I have looked for a while to find some hints on the net but i didnt find one.
If anyone could provide some hints how to do this right? Links to tutorials or code will be fine.

Thanks
Eddy

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

記憶穿過時間隧道 2024-10-27 23:49:50

覆盖 setEditing:animated: 并重新加载表格视图单元格并不是一个好主意。
这非常耗费资源,而且不是合适的地方。

UITableViewCell的子类中,重写方法didtransitionToState:
在那里,您可以直接对细胞出口进行操作,如下所示:

    - (void)didTransitionToState:(UITableViewCellStateMask)state
    {
        [super didTransitionToState:state];

        if (state == UITableViewCellStateShowingEditControlMask) {
            // edit mode : peform operations on the cell outlets here

        } else if (state ==UITableViewCellStateDefaultMask) {
            // normal mode : back to normal
    }

It's NOT a good idea to overwrite setEditing:animated: and reload your table view cells there.
That is very resource-expensive, and not the right place to do it.

In the subclass of UITableViewCell, override method didtransitionToState:
There, you can act directly on the cell outlets, like so :

    - (void)didTransitionToState:(UITableViewCellStateMask)state
    {
        [super didTransitionToState:state];

        if (state == UITableViewCellStateShowingEditControlMask) {
            // edit mode : peform operations on the cell outlets here

        } else if (state ==UITableViewCellStateDefaultMask) {
            // normal mode : back to normal
    }
月牙弯弯 2024-10-27 23:49:50

如果您想调整单元格高度的大小,您还应该更改 UITableView 委托中的“heightForRowAtIndexPath”。
至少这是我偶然发现的事情。

If you want to resize the cells height you should also change "heightForRowAtIndexPath" in your UITableView Delegate.
At least that is a thing I stumbled over a few times.

ペ泪落弦音 2024-10-27 23:49:50

当您设置 myTable.editing=YES; 时,它会调用表视图数据源和委托方法。

因此,如果您有任何数据要在表中显示,那么上面的代码行将调用 delgate 方法

,以便您可以在此处编写代码

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{

        if(myTable.editing==YES)
        {
            return 70;//customize it.
        }
        return 50;

}

when you set myTable.editing=YES; it calls table view datasource and delegate method.

so if you have any data to display in table then the above code line calls the delgate method

so you can code here

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{

        if(myTable.editing==YES)
        {
            return 70;//customize it.
        }
        return 50;

}
瑕疵 2024-10-27 23:49:50

覆盖 setEditing:animated: 并在那里重新加载表格视图单元格。

Overwrite setEditing:animated: and reload your table view cells there.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文