菜鸟教程小白 发表于 2022-12-13 05:00:14

ios - TableView 单元格按钮更改其他单元格的内容


                                            <p><p>单击特定表格 View 单元格上的按钮时,该按钮单击并更改为复选标记。但是,其他单元格也会变为复选标记。并且重新加载 tableview 不会使复选标记消失。我知道这与可重复使用的细胞有关。但是如何从单击单元格按钮时调用的方法更新 cellForRowAtIndex? </p>

<pre><code> -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    // Configure the cell...
    static NSString *ReusableIdentifier = @&#34;Cell&#34;;
   SetListTableViewCell *cell = ;


    cell.delegate = self;

    if () {
    ;
      }
      else {
            ;
      }


    return cell;

    }
</code></pre>

<p>自定义单元格类中的方法。</p>

<pre><code>- (IBAction)addSongButtonPressed:(UIButton *)sender
{
;

UIImage *checkImage = ;
;

}
</code></pre>

<p>来自单元委托(delegate)的方法。 </p>

<pre><code>-(void)addSongButtonPressedOnCell:(id)sender
{
    NSIndexPath *indexPath = ;
NSMutableDictionary *track = ;

;


}
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您需要在单元格之外跟踪选择状态 - 单元格是显示来自数据模型的信息的 transient 对象,您不能使用它来存储状态。</p>

<p>由于您的轨道数据具有不可变的字典,因此您需要添加一个额外的数据结构来存储您的选择状态。我会使用 <code>NSMutableSet</code>。</p>

<p>给你的 ViewController 添加一个属性</p>

<pre><code>@property (strong,nonatomic) NSMutableSet *selectedRows;
</code></pre>

<p>并在<code>viewDidLoad</code></p>中初始化

<pre><code>self.selectedRows=;
</code></pre>

<p>然后您可以使用 to 来跟踪/检查选择状态 - </p>

<pre><code>-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

// Configure the cell...
static NSString *ReusableIdentifier = @&#34;Cell&#34;;
SetListTableViewCell *cell = ;

NSDictionary *track = ;
cell.searchSongTitle.text = ;
cell.searchArtist.text = [objectForKey:@&#34;username&#34;];

cell.plusButton.tag=indexPath.row;   

if () {
    ;
}
else {
    ;
}



//If there is no picture available. Adds a Custom picture.
if ([ isEqual:]){
    cell.searchAlbumArtImage.image = ;
}
else{
    //Init the cell image with the track&#39;s artwork.
            UIImage *cellImage = ]]];
cell.searchAlbumArtImage.image = cellImage;

            }
return cell;

}
</code></pre>

<p>然后你的按钮按下处理程序变成 -</p>

<pre><code>- (IBAction)cellAddSongButtonPressed:(UIButton *)sender {
    NSInteger index =sender.tag;
    ;
    ;
}
</code></pre>

<p>创建一个 <code>Track</code> 类比使用 <code>NSDictionary</code></p> 更简洁</p>
                                   
                                                <p style="font-size: 20px;">关于ios - TableView 单元格按钮更改其他单元格的内容,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/28120678/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/28120678/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - TableView 单元格按钮更改其他单元格的内容