タップしてセクションを展開または折りたたむことができるセクションヘッダーがある UITableView があります。私の特定の例では、各セクションには 1 つの行しかなく、表示 (セクションが展開されている) または非表示 (セクションが折りたたまれている) のいずれかです。セクション ヘッダーとして、カスタム UITableViewHeaderFooterView - HeaderAccountView を使用しています。Interface Builder で *.xib ファイルを作成し、カスタム クラスを HeaderAccountView (まだ IB フィールド) に設定しました。
init
私の HeaderAccountView.h および HeaderAccountView.m ファイルには、このようなメソッドまたはsmthへの変更はありません .self(選択されたセクション)などを強調表示するいくつかの関数のみ.
メインの ViewController .m ファイルに
- (void)viewDidLoad
{
[super viewDidLoad];
.........
.........
UITableView *tableView = (id)[self.view viewWithTag:1];
UINib *nib= [UINib nibWithNibName:@"HeaderAccountView" bundle:nil];
[tableView registerNib:nib forHeaderFooterViewReuseIdentifier:@"HeaderCell"];
}
その後
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
HeaderAccountView *headerView = [tableView dequeueReusableHeaderFooterViewWithIdentifier:@"HeaderCell"];
if (headerView==nil)
{ headerView = [[HeaderAccountView alloc]
initWithReuseIdentifier:@"HeaderCell"];
}
return headerView;
}
プロジェクトを実行しているときはすべて問題ありません-必要なデータを含むセクションがロードされ、セクションがタップされると-ハイライトされます(標準セルのように)。
しかし、たとえば、選択した強調表示されたセクションからテーブルビューを下にスクロールすると、この強調表示されたセクションは既に表示されていません-下から表示されたセクション-すでに強調表示されています!
BOOL selected
プロパティをYESに設定し てHeaderAccountViewの新しいインスタンスを作成するためだと理解しています。
しかし、私はobjective-c(およびコーディング)が初めてで、これを解決する方法がわかりません。
prepareForReuse
このようなカスタム UITableViewHeaderFooterView のメソッドを使用しようとしました
HeaderAccountView.m:
-(void) prepareForReuse
{
self.selectedBackground.alpha = 0;
}
それはうまく機能します-しかし、今私は別の問題を抱えています.最初の(本当に)選択され強調表示されたセクションに戻ると、明らかに強調表示されません.
助けてくれてありがとう。初歩的な質問ならごめんなさい。