ios - uitableviewdelegate - willdisplaycell swift 4




xibからロードされたUITableViewHeaderFooterViewの背景色を変更すると、代わりにcontentView.backgroundColor (4)

私はxibファイルからUITableViewHeaderFooterViewを作成しており、ほとんどすべてが適切に動作しています。

問題は、バックグラウンドカラーを変更しようとしたとき(またはxibで設定されている場合)、コンソールに常にこのメッセージを出力することです。

UITableViewHeaderFooterViewで背景色を設定することは推奨されていません。 代わりにcontentView.backgroundColorを使用してください。

これは私に2つの問題があることを意味します:

  • 私がその警告を見たくない場合は、xibファイルの背景色を取り除かなければなりません(これは、xibが実行時にどのように見えるかを反映しないため望ましくありません)。
  • コードで背景色を変更しようとすると、 contentView.backgroundColor提案が表示されますが、その提案に従うと何も起こりません。 (これはcontentViewnilあるためです)。

注:ここでも同様の質問がありますが、 これは主にメッセージのミュートに関係していますが、上記の両方の問題を解決する代替ソリューションを見つけることはできません。

更新:明確にするために、ヘッダービュー用のxibファイルを使い続け、dequeueReusableHeaderFooterViewWithIdentifierを呼び出せるようにして、ビューの効率的な管理が可能にしてください。


UITableViewHeaderFooterViewで背景色を設定することは推奨されていません。 代わりにcontentView.backgroundColorを使用してください。

これは、ヘッダーを別のxibファイルにデザインし、そこにメインのUIViewの背景を設定した場合に発生します。

これを解決するには、UIViewの背景色をInterfaceBuilderのデフォルトの色に戻し、viewForHeaderInSection:sectionメソッド内で背景色を設定します。

override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let header = tableView.dequeueReusableHeaderFooterView(withIdentifier: "CustomHeaderXibFileName") as! CustomHeader
    header.contentView.backgroundColor = UIColor.blueColor
}

ご覧のとおり、 header.contentView.backgroundColorを使用し、 header.contentView.backgroundColorは使用しませheader.backgroundColor (これはxibファイルが実際に行っていたものです)。


willAppearデリゲートコールバックにcontentView.backgroundColorを設定します。

- (void)tableView:(UITableView *)tableView
willDisplayHeaderView:(UIView *)view
       forSection:(NSInteger)section

または

- (void)tableView:(UITableView *)tableView
willDisplayFooterView:(UIView *)view
       forSection:(NSInteger)section

これは私のために働く:

-(void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section
    {

        UITableViewHeaderFooterView *headerView=(UITableViewHeaderFooterView *)view;
        [headerView.backgroundView setBackgroundColor:[[UIColor blackColor]colorWithAlphaComponent:0.4]];
    }

コードを使用してカスタムヘッダーを作成して配置する方法はありますか?

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSinteger)section {

      UIView * myHeader = [[UIView alloc] initWithFrame: CGRectMake(0, 0, 320, 40)];
      [myHeader setBackgroundColor:[UIColor grayColor]];

      UILabel * TitleLabel = [[UILabel alloc] initWithFrame: CGRectMake(10, 5, 320, 20)];
      TitleLabel.text = @"My Title";

      [myHeader addSubview:TitleLabel];


      return myHeader;
}




uiview