0

こんにちは私は現在、SimonLeeのすばらしいチュートリアルを使用してセルを拡張しています。すべてが正常に機能しています。

私のセルは100ピクセルで、展開するとセルの高さは144ピクセルになります。追加された44pxに、バーボタン付きのツールバーを配置しました。ボタンが機能するようになりましたが、問題が1つあります。

セルが展開されると、100ピクセルのいずれかをタップしてセルを閉じることができますが、セルが閉じられると、セルの下の44ピクセルをタップすると、バーボタンがそのアクションを実行します。サイトから非表示にした場合でも有効になっていると思います。

ストーリーボードでユーザーインタラクションを無効にしましたが、セルが選択されているときにオンにできません。その逆も同様です。誰かが私を正しい方向に向けることができれば、それはうまくいくでしょう!

サイモンは次のことについて何か言いましたが、正確にどこに実装すればよいのかよくわかりません。どこでもやってみました!

for(NewsCell *cell in [self.tableView visibleCells]) {
    BOOL cellIsSelected = [selectedIndexes objectForKey:indexPath];
    [cell.detailToolbar setUserInteractionEnabled:cellIsSelected];
}

そして、これが私のコードの一部です:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
// If our cell is selected, return double height

if([self cellIsSelected:indexPath]) {

return 144.0;

}

// Cell isn't selected so return single height

return 100.0;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath  *)indexPath
{

// Deselect
[self.tableView deselectRowAtIndexPath:indexPath animated:YES];

self.tableView.clipsToBounds = YES;


// Store cell 'selected' state keyed on indexPath
NSNumber *selectedIndex = [NSNumber numberWithBool:isSelected];
[selectedIndexes setObject:selectedIndex forKey:indexPath]; 

// This is where magic happens...
[self.tableView beginUpdates];
 [self.tableView endUpdates];
}
4

2 に答える 2

0

didSelectRowAtIndexPathのtableViewのclipsToBoundsは、私には少し奇妙に見えます

self.tableView.clipsToBounds = YES;

セルのclipoToBoundsをYESに設定しましたか?

于 2012-05-19T06:58:35.193 に答える
0

私は自分でそれを理解しました。私がしなければならなかったのは、セル内のユーザーインタラクションをオフに設定することだけでした。選択したセルのスイッチをオンにします。

for(NewsCell *cell in [self.tableView visibleCells]) {
        BOOL cellIsSelected = isSelected;
        [cell.detailToolbar setUserInteractionEnabled:cellIsSelected];
}
于 2012-05-20T04:37:32.490 に答える