Де встановити колір UITableView, колір сепаратора?


162

Я додав UITableViewв IB і встановив "делегат" і "джерело даних", і все працює добре. Що я хотів зробити далі, це змінити колір роздільника, але єдиний спосіб, який я міг би зробити для цього, - це додати метод до одного з зворотних зворотних дзвінків делегата, чи є краще місце, щоб я ставлю це?

Наразі у мене цього немає, але я думав, що, можливо, мені потрібно додати "iVar" від мого контролера, щоб я міг зв’язатись з UITableViewIB і потім встановити колір роздільника у viewDidload?

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

Додавання змінної та підключення її до ІБ - це я завжди робив.
s1mm0t

Ось що я думав. Я робив підручник, який вони не використовували, і iVar, вони просто покладалися на зворотній зв'язок делегата та джерела даних. Однак вони ніколи не зверталися до кольору роздільника, так, можливо, саме тому.
пухнастий

Відповіді:


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

Я сподіваюся, що це допомагає - вам потрібно self.буде отримати доступ до нього, пам’ятайте.

Швидкий 4.2

tableView.separatorColor = UIColor.red

Вітаю, Хелен, чи отримує це доступ до нього без потреби додавати властивість @, схоже, це так?
пухнастий

1
Це правда. Ви підкласифікуєте UITableViewController, який оголошує це як властивість. Тому він успадковує методи аксесуара / сеттера надкласу, тому ви можете встановити його відповідно. Однак ви не можете отримати доступ до змінної екземпляра безпосередньо (напевно, це добре). Причина, чому ви можете встановити його в методі делегата, полягає в тому, що це параметр методу, який називається.
Олена

2
Або якщо вам подобається: self.tableView.separatorColor = UIColor.clearColor;
bbrame

2
Не особливо частина відповіді, але додавання [super viewDidLoad];до фрагмента коду було б непогано.
totocaster

57

Тепер ви повинні мати можливість це робити безпосередньо в ІБ.

Не впевнений, якщо це було доступне, коли запитання було розміщено спочатку.

введіть тут опис зображення


24

Швидка версія:

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

Спробуйте + (instancetype) зовнішній вигляд UITableView:

Завдання-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, дошка розказок-> виберіть «Перегляд таблиці» -> інспектор-> роздільник.

Swift 3, версія xcode 8.3.2

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.