菜鸟教程小白 发表于 2022-12-13 05:41:47

iphone - dequeueReusableCellWithIdentifier、自定义 UITableViewCell 的问题


                                            <p><p>我有带有 2 个按钮的自定义单元格(这些按钮的功能只是禁用被按下的按钮)。
当我以这种经典方式使用 dequeueReusableCellWithIdentifier 时:</p>

<pre><code>- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @&#34;Cell&#34;;
cell = ((MainCell*));
if (cell == nil) {
[ loadNibNamed:@&#34;MainCell&#34; owner:self options:nil];
}
    return cell;
}
</code></pre>

<p>UITableView 有 1 个部分,问题是:在第一个单元格上,当我按下按钮以禁用它,然后向下滚动以显示其他单元格时,当我再次向上滚动时,第一个单元格是一个新单元格,按钮是启用。
我知道如果已经创建了reuseIdentifier,则不会重新创建单元格,但是这样我就丢失了所有不可见的单元格的信息。</p>

<p>有什么想法吗?</p>

<p>提前致谢</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我遇到了类似的问题——我认为问题在于在任何给定时间只有可见单元格实际上在内存中,当它重新显示一个旧单元格时,它实际上只是将一个新单元格出列。我认为解决方案是使用 <code>- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath</code> 委托(delegate)方法:</p>

<pre><code>- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    id objectForCell = ;
    if (!objectForCell.button1IsEnabled) {
      cell.button1.enabled = NO; //or something along those lines
    } else {
      cell.button1.enabled = YES; //necessary so that all the other buttons don&#39;t disable
    }
}
</code></pre>

<p>如果有人有更好的解决方案,我会很高兴听到。 </p></p>
                                   
                                                <p style="font-size: 20px;">关于iphone - dequeueReusableCellWithIdentifier、自定义 UITableViewCell 的问题,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/2493598/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/2493598/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: iphone - dequeueReusableCellWithIdentifier、自定义 UITableViewCell 的问题