Зникає сепаратор UITableViewCell в iOS7


129

У мене є дивна проблема, що стосується UITableViewлише iOS 7.

UITableViewCellSeparatorзникає над першим рядом і нижче останнього. Іноді після вибору рядків або деяких дій прокрутки це з'являється.

У моєму випадку tableViewзавантажуються з Storyboardз UITableViewStylePlainстилем. Проблема, безумовно, не в тому UITableViewCellSeparatorStyle, що не змінюється за замовчуванням UITableViewCellSeparatorStyleSingleLine.

Як я читав на Форумах Apple Dev ( тут і тут ), у інших людей є така проблема, і такі проблеми можна знайти, наприклад:

Workaround: disable the default selection and recreate the behaviour in a method
trigged by a tapGestureRecognizer.

Але я все ще шукаю причину такої дивної поведінки сепаратора.

Будь-які ідеї?

Оновлення: Як я бачив у XCode 5.1 DP та iOS 7.1 beta, Apple намагалася виправити цю проблему. Тепер роздільник відображається за потребою іноді під останнім рядком, після деякого оновлення, але не після створення таблиці.


19
Іноді я відчуваю, що iOS7 такий незрілий. Цей і довгий перелік речей, які я маю тут, показують, наскільки iOS7 знаходиться від вдосконалення попередніх iOS.
Bms270

1
Програма "Налаштування" від Apple має таку ж проблему, тому я вважаю, що це проблема iOS 7. Я повідомив про це, і під час подальшого прохання вони попросили зображень, що показують проблему.
Йоган

@Gatada Де у програмі Налаштування ви бачите проблему?
Джеймі Форест

2
Зустріли ту саму проблему та виправили додавання [set setSeparatorInset: UIEdgeInsetsFromString (@ "1")]; з in (UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) метод indexPath
Фатіма

1
Це все ще виявляється порушеним у бета-версії iOS 8.0. Я відкрив радіолокатор 17724043, якщо хтось би дбав про його копіювання.
Енді Вілкінсон,

Відповіді:


77

Я скинув ієрархію підпорядкованих осередків і виявив, що параметр _UITableViewCellSeparatorViewприховано. Недарма його не показують!

Я переоцінив layoutSubviewsсвій UITableViewCellпідклас і тепер роздільники надійно відображаються:

Завдання-C :

- (void)layoutSubviews {
    [super layoutSubviews];

    for (UIView *subview in self.contentView.superview.subviews) {
        if ([NSStringFromClass(subview.class) hasSuffix:@"SeparatorView"]) {
            subview.hidden = NO;
        }
    }
}

Швидкий :

override func layoutSubviews() {
    super.layoutSubviews()

    guard let superview = contentView.superview else {
        return
    }
    for subview in superview.subviews {
        if String(subview.dynamicType).hasSuffix("SeparatorView") {
            subview.hidden = false
        }
    }
}

Інші запропоновані тут рішення не працювали послідовно для мене або здаються незграбними (додавання спеціальних переглядів 1-піксельного колонтитула).


Я використовував ваш метод, але не в підкласі Я додав категорію до UITableViewCell. Це мені допомогло. Дякую.
Віталій Боярський

Звичайно, це можливо і в категорії. Оскільки для цього потрібен шипучий метод, я застосував простий підхід підкласу.
Ортвін Генц

3
Це єдине рішення, яке працювало на мене. Моя проблема з'явилася, коли UITableView було достатньо рядків для прокрутки. Ця "hasSuffix:" частина є досить крихкою.
juhan_h

Працює для мене. Можливо, питання нерозумно, але хіба це не використання приватного API?
Foriger

1
Для мене працює в iOS9
tounaobun

42

Це працювало для мене:

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

    // fix for separators bug in iOS 7
    self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
    self.tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;

Ви заслуговуєте на більшу кількість голосів, це саме те, що мені було потрібно, я додав його в категорію, тож тепер після того, як я [tableView reloadData], якщо ця помилка станеться (у моєму випадку повторно з’являється прихований роздільник колонтитулів), я закликаю [tableView reloadSeparators];
NiñoScript

12

Я також мав проблеми з відсутніми сепаратора , і я виявив, що проблема виникла тільки тоді , коли heightForRowAtIndexPathбув повертає десяткове число . Рішення:

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
    return ceil(yourHeight) // Ceiling this value fixes disappearing separators
}

1
Що з випадком, якщо я не реалізую рівний метод висотиForRowAtIndexPath?
BS

Цікаво. Однак це трапляється і в моєму проекті - і heightForRowAtIndexPath не реалізований. У IB рядок / висота комірок - 100.
Йохан

6
Це не вирішило проблему для мене, і у мене є метод heightForRowAtIndexPath.
Гергелі Ковач

Вирішує питання хоча б частково. Клітина, схоже, плутається щодо не цілих висот.
Нік Фролов

Вам потрібно зменшити кількість пікселів, а потім розділити на коефіцієнт масштабу екрану, щоб отримати бали, добре, щоб вони були у десятковій кількості. Якщо цього не зробити, це не буде оптимізовано сітківку.
trss

11

Ви спробували додати UIView висотою 1 у заголовку та колонтитулі таблиці світло-сірим кольором тла? В основному він буде знущатися над першим і останнім роздільниками.


це звучить добре, але як саме це робити? використовувати viewforfooter?
skinsfan00atg

1
це не так просто, як це звучить, мені чомусь довелося також реалізувати висоту підніжжя, інакше висота, зазначена в initwithframe, була проігнорована. Я також помічаю, хоча lightgraycolor - це не той самий колір, тому це дійсно не буде працювати. можливо, доведеться зробити спеціальний сірий
skinsfan00atg

це досить примхливий ІМО
JackyJohnson

Так, я повністю згоден. Це єдине рішення, яке я знайшов одразу після виходу iOS 7, чи є кращий підхід зараз?
airpaulg

2
Для відповідності кольору використовуйте tableView.separatorColor
Jeff

8

@samvermette

Я вирішив проблему, використовуючи методи делегата. Тепер він не мерехтить:

-(void)tableView:(UITableView *)tableView didHighlightRowAtIndexPath:(NSIndexPath *)indexPath {
    // fix for separators bug in iOS 7
    tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
    tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
}


-(void)tableView:(UITableView *)tableView didUnhighlightRowAtIndexPath:(NSIndexPath *)indexPath {
    // fix for separators bug in iOS 7
    tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
    tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
}

7

Ми зіткнулися з цією проблемою в нашому додатку. Коли користувач обрав комірку, на стек навігаційного контролера було натиснуто новий вид таблиці, а потім, коли користувач вискочив з нього, роздільник відсутній. Ми вирішили це, ввівши [self.tableView deselectRowAtIndexPath:indexPath animated:NO];в didSelectRowAtIndexPathтаблицю метод делегата.


Ви пробували self.tableView.allowsMultipleSelection = NO;?
wrightak

6

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

просто додайте:

[self.tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];
[self.tableView deselectRowAtIndexPath:indexPath animated:NO];

1
Це вирішення вирішило це для мене; однак я перевернув це - щоб зберегти вибір. Отже, спочатку скасуйте вибір, а потім повторно виберіть.
Йоган

2
Я не знаю, що перекрити, коли ви скажете "після перезавантаження даних"
airpaulg

6

Я виявив, що найпростішим рішенням є, після перезавантаження комірки, також перезавантажити клітинку вище:

if (indexPath.row > 0) {
    NSIndexPath *path = [NSIndexPath indexPathForRow:indexPath.row - 1 inSection:indexPath.section];
    [self.tableView reloadRowsAtIndexPaths:@[path] withRowAnimation:UITableViewRowAnimationNone];
}

1
Працювали для мене. Дякую. Будь-які інші методи мені не допомогли (включити зміну стилю роздільника від відповіді samvermette).
серфрідер

4

Просте і чітке рішення, яке працює як на iOS 8, так і на iOS 9 (бета-версія 1)

Ось простий, чистий і не нав'язливий спосіб вирішення. Він включає виклик методу категорії, який буде фіксувати роздільники.

Все, що вам потрібно зробити, - це спуститися за ієрархією комірки та розкрити роздільник. Подобається це:

for (UIView *subview in cell.contentView.superview.subviews) {
    if ([NSStringFromClass(subview.class) hasSuffix:@"SeparatorView"]) {
        subview.hidden = NO;
    }
}

Я рекомендую додати це до категорії на UITableViewCell, наприклад:

@interface UITableViewCell (fixSeparator)
- (void)fixSeparator;
@end

@implementation UITableViewCell (fixSeparator)

- (void)fixSeparator {
    for (UIView *subview in self.contentView.superview.subviews) {
        if ([NSStringFromClass(subview.class) hasSuffix:@"SeparatorView"]) {
            subview.hidden = NO;
        }
    }
}

@end

Оскільки сепаратор може зникнути в іншій комірці, ніж обрана в даний час, можливо, найкраще закликати це виправлення до всіх комірок у поданні таблиці. Для цього ви можете додати категорію до UITableView, яка йде так:

@implementation UITableView (fixSeparators)

- (void)fixSeparators {
    for (UITableViewCell *cell in self.visibleCells) {
        [cell fixSeparator];
    }
}

@end

Якщо це на місці, ви можете зателефонувати -fixSeparatosна ваш tableView одразу після дії, яка змушує їх зникнути. У моєму випадку це було після дзвінка [tableView beginUpdates]і [tableView endUpdates].

Як я вже говорив на початку, я перевірив це як на iOS 8, так і на iOS 9. Я припускаю, що він буде працювати навіть на iOS 7, але у мене немає можливості спробувати це. Як ви, напевно, знаєте, це не співпадає з внутрішніми елементами комірки, щоб вона могла перестати працювати в майбутньому випуску. І Apple теоретично могла (0,001% шансу) відхилити вашу програму через це, але я не можу зрозуміти, як вони могли навіть дізнатися, що ви там робите (перевірка суфіксу класу статичними аналізаторами не може бути виявлена ​​як щось погано, ІМО).


ТАК. Це працювало для мене після переходу на останню версію Swift. ++ для виклику fixSeparators після кожного дзвінка до tableView.endUpdates ().
ObjectiveTC

1
Я радий, що це вам було корисно! Я справді вірю, що це найкраще рішення, тому, сподіваємось, більше людей це відкриють.
Лукас Петро

4

На основі коментаря @ ortwin-gentz, це рішення працює для мене в iOS 9.

func fixCellsSeparator() {

    // Loop through every cell in the tableview
    for cell: UITableViewCell in self.tableView.visibleCells {

        // Loop through every subview in the cell which its class is kind of SeparatorView
        for subview: UIView in (cell.contentView.superview?.subviews)!
            where NSStringFromClass(subview.classForCoder).hasSuffix("SeparatorView") {
                subview.hidden = false
        }
    }

}

(Швидкий код)

Я використовую функцію fixCellsSeparator () після виклику endUpdates () у деяких методах мого tableView, наприклад:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

    //  Perform some stuff
    //  ...

    self.tableView.endUpdates()
    self.fixCellsSeparator()

}

Я сподіваюся, що це рішення буде корисним для когось!


2

Доповнення до відповіді airpaulg.

Тому в основному потрібно реалізувати два методи UITableDelegate. Ось моє рішення, яке працює як на iOS7, так і на iOS6.

#define IS_OS_VERSION_7 (NSFoundationVersionNumber_iOS_6_1 < floor(NSFoundationVersionNumber))

#define UIColorFromRGB(hexRGBValue) [UIColor colorWithRed:((float)((hexRGBValue & 0xFF0000) >> 16))/255.0 green:((float)((hexRGBValue & 0xFF00) >> 8))/255.0 blue:((float)(hexRGBValue & 0xFF))/255.0 alpha:1.0]

// Це дозволить приховати порожню сітку таблиці нижче комірок, якщо вони не охоплюють весь екран

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
    UIView *view = nil;

    if (IS_OS_VERSION_7 /* && <is this the last section of the data source> */)
    {
        CGFloat height = 1 / [UIScreen mainScreen].scale;
        view = [[UIView alloc] initWithFrame:CGRectMake(0., 0., 320., height)];
        view.backgroundColor = UIColorFromRGB(0xC8C7CC);
        view.autoresizingMask = UIViewAutoresizingFlexibleWidth;
    }
    else
    {
        view = [UIView new];
    }
    return view;
}


- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
    if (IS_OS_VERSION_7 /* && <is this the last section of the data source> */)
    {
        return 1 / [UIScreen mainScreen].scale;
    }
    else
    {
        // This will hide the empty table grid below the cells if they do not cover the entire screen
        return 0.01f;
    }
}

2

Це вирішило для мене проблему:

Переконайтесь, що clipsToBoundsвстановлено значення YES для комірки, а NO - для комірки contentView. Також встановитиcell.contentView.backgroundColor = [UIColor clearColor];


Встановлення clipSubviews на помилковій у дошці розкадрування як для комірки, так і для contentView виправлено проблему! Потрібно більше голосів!
Бретт

Налаштування clipsToBounds на YES на клітинках було мені достатньо.
Rene Juuse

2

Здається, ця проблема виявляється за такої кількості обставин.

Для мене це мало відношення до вибору клітин. Я поняття не маю, чому і не встиг заглибитися в нього занадто глибоко, але можу сказати, що він почав виникати, коли я встановив клітинку selectionStyleна "ні". тобто:

//This line brought up the issue for me
cell.selectionStyle = UITableViewCellSelectionStyleNone;

Я спробував скористатися деякими з вищевказаних методів делегації, які включають і вимикають separatorStyle властивістьtableView але, схоже, вони нічого не робили, щоб виправити мою проблему.

Вся причина, чому мені це було потрібно, полягала в тому, що мені навіть не потрібен відбір клітин.

Отже, я знайшов щось, що працювало на мене. Щойно я відключив вибір на UITableView:

tableView.allowsSelection = NO;

Сподіваюся, це допоможе комусь, якщо вам не потрібно мати вибір клітин.


2

Я спробував виправити так багато пропозицій, але не можу це виправити. Нарешті я вирішив настроїти спеціальний розділовий рядок як нижче:

func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
    var lineView = UIView(frame: CGRectMake(20, cell.contentView.frame.size.height - 1.0, cell.contentView.frame.size.width - 20, 1))

    lineView.backgroundColor = UIColor(red: 170.0/255.0, green: 170.0/255.0, blue: 170.0/255.0, alpha: 1)
    cell.contentView.addSubview(lineView)
}

P / S: користувальницька на willDisplayCell НЕ коміркаForRowAtIndexPath


1

Досить дивно, але зміна separatorInsetзначення комірки назад і назад, здається, працює:

NSIndexPath *selectedPath = [self.controller.tableView indexPathForSelectedRow];
[self.controller.tableView deselectRowAtIndexPath:selectedPath animated:YES];

UITableViewCell *cell = [self.controller.tableView cellForRowAtIndexPath:selectedPath];
UIEdgeInsets insets = cell.separatorInset;
cell.separatorInset = UIEdgeInsetsMake(0.0, insets.left + 1.0, 0.0, 0.0);
cell.separatorInset = insets;

1

У мене також була проблема цього непослідовного відображення роздільної лінії в нижній частині мого UITableView. Використовуючи спеціальний вигляд нижнього колонтитулу, я зміг створити подібну лінію та відобразити її поверх потенційного існуючого (який іноді відсутній).

Єдина проблема цього рішення полягає в тому, що Apple може змінити за один день товщину лінії

- (UIView*) tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
    float w = tableView.frame.size.width;

    UIView * footerView =  [[UIView alloc] initWithFrame:CGRectMake(0, 0, w, 1)];
    footerView.autoresizingMask = UIViewAutoresizingFlexibleWidth;
    footerView.clipsToBounds=NO;

    UIView* separatoraddon = [[UIView alloc] initWithFrame:CGRectMake(0, -.5, w, .5)];
    separatoraddon.autoresizingMask = UIViewAutoresizingFlexibleWidth;
    separatoraddon.backgroundColor = tableView.separatorColor;
    [footerView addSubview:separatoraddon];

    return footerView;
}
- (CGFloat) tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
    return 1;
}

1

Я вирішив поставити ці рядки коду, де відбувається оновлення огляду таблиці:

self.tableView.separatorStyle = UITableViewCellSeparatorStyle.None;
self.tableView.separatorStyle = UITableViewCellSeparatorStyle.SingleLine;

Наприклад, у моєму випадку я поставив їх тут:

tableView.beginUpdates()
tableView.insertRowsAtIndexPaths(insertIndexPaths, withRowAnimation: UITableViewRowAnimation.Fade)
tableView.endUpdates()
self.tableView.separatorStyle = UITableViewCellSeparatorStyle.None;
self.tableView.separatorStyle = UITableViewCellSeparatorStyle.SingleLine;

1

Ви повинні видалити виділення комірок, перш ніж оновлювати клітинку. Тоді ви можете відновити вибір.

NSIndexPath *selectedPath = [self.tableview indexPathForSelectedRow];
    [self.tableview deselectRowAtIndexPath:selectedPath animated:NO];
    [self.tableview reloadRowsAtIndexPaths:@[ path ] withRowAnimation:UITableViewRowAnimationNone];
    [self.tableview selectRowAtIndexPath:selectedPath animated:NO scrollPosition:UITableViewScrollPositionNone];

1

Щоб виправити вищевказану проблему, додайте порожній колонтитул у viewDidLoad.

UIView *emptyView_ = [[UIView alloc] initWithFrame:CGRectZero];   
emptyView_.backgroundColor = [UIColor clearColor];  
[tableView setTableFooterView:emptyView_];

Будь ласка, не використовуйте вищевказані рядки для перегляду методу делегуванняForFooterInSection. Значить не реалізувати метод viewForFooterInSection.


0

щоб розширити відповідь airpaulg, тому що це не зовсім працювало для мене.

Мені довелося також застосувати метод visforfooter, щоб отримати висоту

тоді я помітив, що світло-зелений колір занадто темний. Я це виправив, захопивши поточний колір роздільника перегляду таблиці і використовуючи це:

UIColor *separatorGray = [self.briefcaseTableView separatorColor]; [footerSeparator setBackgroundColor:separatorGray];


0

Я також зіткнувся з цією проблемою в нашому проекті. У моєму перегляді таблиці був tableFooterView, який міг би зробити це. Я виявив, що роздільник нижче останнього рядка з'явиться, якщо я видаляю цю таблицюFooterView.


0

Що для мене змінило перезавантаження рядка, для якого нижній рядок розділення не відображатиметься:

NSIndexPath *indexPath = 
     [NSIndexPath indexPathForRow:rowIndex inSection:sectionIndex];  
[self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];

0

Я вирішую цю проблему іншим способом: додайте шар, висота якого становить 0,5 пікселів, а його колір - світлограй в tableview.tableFooterView як його підшар.

код саме такий:

UIView *tableFooterView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 70)];
CALayer *topSeperatorLine = [CALayer layer];
topSeperatorLine.borderWidth = 0.5f;
topSeperatorLine.borderColor = [UIColor lightGrayColor].CGColor;
topSeperatorLine.frame = CGRectMake(0, 0, 320, 0.5f);
[tableFooterView.layer addSublayer:topSeperatorLine];
self.tableView.tableFooterView = tableFooterView;

0

У вашому підкласі UITableViewCell реалізуйте layoutSubviews та додайте:

- (void)layoutSubviews{
    [super layoutSubviews]
    for (UIView *subview in self.contentView.superview.subviews) {
        if ([NSStringFromClass(subview.class) hasSuffix:@"SeparatorView"]) {
            CGRect separatorFrame = subview.frame;
            separatorFrame.size.width = self.frame.size.width;
            subview.frame = separatorFrame;
        }
    }
}

0

Як хтось ще згадував, ця проблема, схоже, проявляється різними способами. Я вирішив свою проблему за допомогою наступного рішення:

[tableView beginUpdates];
[tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];
[tableView endUpdates];

0

Переглядаючи відповіді та рішення, я придумав такі спостереження:

Це здається проблематичним для обох iOS 7 та 8. Я помітив проблему під час вибору комірки з коду в viewDidLoadметоді так:

1) Це вирішувалося в тому viewDidAppear:випадку, якщо хтось не заперечує за помітною затримкою між поданням подання та вибором комірки

2) друге рішення працювало для мене, але код виглядає дещо крихким, оскільки базується на внутрішній реалізаціїUITableViewCell

3) додавання власного роздільника здається найбільш гнучким і найкращим на даний момент, але вимагає більше кодування :)



0

Оскільки це все ще проблема з IOS 8, я додам своє рішення у Swift. Встановіть роздільну лінію для перегляду таблиці. Потім додайте цей код до методу делегата cellForRowAtIndexPath. Це додасть приємний роздільник. Оператор if дозволяє визначити, які комірки повинні мати роздільник.

    var separator:UIView!
    if let s = cell.viewWithTag(1000)
    {
        separator = s
    }
    else
    {
        separator = UIView()
        separator.tag = 1000
        separator.setTranslatesAutoresizingMaskIntoConstraints(false)
        cell.addSubview(separator)

        // Swiper constraints
        var leadingConstraint = NSLayoutConstraint(item: separator, attribute: .Leading, relatedBy: .Equal, toItem: cell, attribute: .Leading, multiplier: 1, constant: 15)
        var heightConstraint = NSLayoutConstraint(item: separator, attribute: .Height, relatedBy: .Equal, toItem: nil, attribute: .NotAnAttribute, multiplier: 1, constant: 0.5)
        var bottomConstraint = NSLayoutConstraint(item: cell, attribute: .Bottom, relatedBy: .Equal, toItem: separator, attribute: .Bottom, multiplier: 1, constant:0)
        var trailingConstraint = NSLayoutConstraint(item: cell, attribute: .Trailing, relatedBy: .Equal, toItem: separator, attribute: .Trailing, multiplier: 1, constant: 15)
        cell.addConstraints([bottomConstraint, leadingConstraint, heightConstraint, trailingConstraint])
    }

    if indexPath.row == 3
    {
        separator.backgroundColor = UIColor.clearColor()
    }
    else
    {
        separator.backgroundColor = UIColor.blackColor()
    }

0

Ось моє рішення цієї проблеми. Після того, як ви вставите клітинку, перезавантажте розділ. Якщо перезавантаження всього розділу для вас занадто інтенсивне, просто перезавантажте indexPaths вгорі та внизу.

[CATransaction begin];
[CATransaction setCompletionBlock:^{
    //  Fix for issue where seperators disappear

    [self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone];
}];

[self.tableView insertRowsAtIndexPaths:@[ indexPath ] withRowAnimation:UITableViewRowAnimationFade];

[CATransaction commit];

0

зіткнувшись із подібною проблемою, я виявив, що ще одним хорошим рішенням, особливо якщо ваш джерело даних не є великим, є перезавантажити tableData при впровадженні -(void)scrollViewDidScroll:(UIScrollView *)scrollViewметоду, ось приклад:

-(void)scrollViewDidScroll:(UIScrollView *)scrollView {
      if (scrollView == self.tableView1) {
          [self.tableView1 reloadData];
      }

      else {
          [self.tableView2 reloadData];
      }
}

Ви також можете просто перезавантажити невидимі дані на основі видимого джерела даних, але це потребує ще кількох злому.

Майте на увазі, що ця функція делегата підпадає під UITableViewDelegateпротокол!

Сподіваюся, це допомагає!

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