UITableView、セパレータの色はどこに設定しますか?


162

私はUITableViewIB にを追加し、「デリゲート」と「データソース」を設定しましたが、すべて正常に機能しています。次に行うことは、セパレーターの色を変更することでしたが、これを行う唯一の方法は、デリゲートコールバックの1つにメソッドを追加することでした。これを配置するより良い場所はありますか?

現時点ではありませんがUITableView、IBにリンクできる「iVar」をコントローラーから追加し、セパレーターの色をviewDidload?に設定する必要があるのではないかと考えていました。

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    [tableView setSeparatorColor:[UIColor blackColor]];
    return 65;
}

変数を追加し、それをIBに接続するのは、私がいつも行っている方法です。
s1mm0t 2010

それは私が考えていたものです。私は彼らが使用していないチュートリアルとiVarを行っていましたが、彼らはデリゲートとデータソースのコールバックに依存していました。しかし、彼らはセパレータの色にアクセスしたことがないので、多分それが理由です。
fuzzygoat

回答:


335
- (void)viewDidLoad
{
   [self.tableView setSeparatorColor:[UIColor myColor]];
}

お役に立てば幸いですself.。アクセスするにはが必要です。覚えておいてください。

Swift 4.2

tableView.separatorColor = UIColor.red

こんにちはヘレン、@プロパティを追加する必要なしにそれにアクセスしますか?
fuzzygoat

1
これは本当です。プロパティとして宣言するUITableViewControllerをサブクラス化しています。したがって、スーパークラスのアクセサ/セッターメソッドを継承するため、それに応じて設定できます。ただし、インスタンス変数に直接アクセスすることはできません(おそらく良いことです)。デリゲートメソッドで設定できるのは、呼び出されるメソッドのパラメーターであるためです。
ヘレン

2
または、必要に応じて:self.tableView.separatorColor = UIColor.clearColor;
bbrame 2013

2
特に答えの一部ではありませんが[super viewDidLoad];、コードスニペットに追加すると便利です。
totocaster 2017年

57

これで、IBで直接実行できるようになります。

ただし、質問が最初に投稿されたときに利用可能であったかどうかは不明です。

ここに画像の説明を入力してください


24

Swiftバージョン:

override func viewDidLoad() {
    super.viewDidLoad()

    // Assign your color to this property, for example here we assign the red color.
    tableView.separatorColor = UIColor.redColor()
}

1
これは'separatorColor' is unavailable、tvOSのエラーを示しています。
バナナ

12

UITableViewの+(instancetype)の外観を試します。

Objective-C:

[[UITableView appearance] setSeparatorColor:[UIColor blackColor]]; // set your desired colour in place of "[UIColor blackColor]"

Swift 3.0:

UITableView.appearance().separatorColor = UIColor.black // set your desired colour in place of "UIColor.black"

注:変更は、アプリケーションで使用されるすべてのテーブルに反映されます。


3

すべてのセパレータに同じ色を設定したいだけで不透明な場合は、次のように使用できます。

 self.tableView.separatorColor = UIColor.redColor()

セパレータに別の色を使用する場合、セパレータの色をクリアする場合、またはアルファ付きの色を使用する場合。

注意してください:デフォルトの色を持つbackgroundViewがセパレーターにあることを知っている必要があります。

これを変更するには、次の関数を使用できます。

    func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
        if(view.isKindOfClass(UITableViewHeaderFooterView)){
            var headerView = view as! UITableViewHeaderFooterView;
            headerView.backgroundView?.backgroundColor = myColor

           //Other colors you can change here
           // headerView.backgroundColor = myColor
           // headerView.contentView.backgroundColor = myColor
        }
    }

    func tableView(tableView: UITableView, willDisplayFooterView view: UIView, forSection section: Int) {
        if(view.isKindOfClass(UITableViewHeaderFooterView)){
            var footerView = view as! UITableViewHeaderFooterView;
            footerView.backgroundView?.backgroundColor = myColor
           //Other colors you can change here
           //footerView.backgroundColor = myColor
           //footerView.contentView.backgroundColor = myColor
        }
    }

それが役に立てば幸い!


1
これは'separatorColor' is unavailable、tvOSのエラーを示しています。
バナナ

3

Swift 3、xcodeバージョン8.3.2、storyboard->テーブルの選択View-> inspector-> Separator。

Swift 3、xcodeバージョン8.3.2

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.