Якщо немає результатів перегляду таблиці, виведіть на екран екран "Немає результатів"


114

У мене є tableview, де інколи не може бути ніяких результатів для переліку, тому я хотів би поставити щось, що говорить "немає результатів", якщо немає результатів (або мітка, або одна комірка перегляду таблиці?).

Чи є найпростіший спосіб це зробити?

Я б спробував labelпозаду tableviewтоді сховати одне з двох на основі результатів, але оскільки я працюю з a, TableViewControllerа не нормальним, ViewControllerя не впевнений, наскільки розумним чи виконаним це є.

Я також використовую Parseі підкласифікацію як PFQueryTableViewController:

@interface TableViewController : PFQueryTableViewController

Я можу надати будь-які необхідні додаткові деталі, просто повідомте мене!

TableViewController Сцена в Розгортці:

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

РЕДАКТИРУЙТЕ: На Мідхуна МП, ось код, який я використовую

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    NSInteger numOfSections = 0;
    if ([self.stringArray count] > 0)
    {
        self.tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
        numOfSections                 = 1;
        //yourTableView.backgroundView   = nil;
        self.tableView.backgroundView = nil;
    }
    else
    {
        UILabel *noDataLabel         = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, self.tableView.bounds.size.width, self.tableView.bounds.size.height)];
        noDataLabel.text             = @"No data available";
        noDataLabel.textColor        = [UIColor blackColor];
        noDataLabel.textAlignment    = NSTextAlignmentCenter;
        //yourTableView.backgroundView = noDataLabel;
        //yourTableView.separatorStyle = UITableViewCellSeparatorStyleNone;
        self.tableView.backgroundView = noDataLabel;
        self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
    }

    return numOfSections;
}

І ось Вигляд, який я отримую, у нього все ще є розділові лінії. Я відчуваю, що це якась невелика зміна, але я не впевнений, чому з'являються розділові лінії?

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


Я думаю, що фокус полягав у тому, щоб встановити порожній footerView на табличному перегляді, щоб позбутися рядків.
Бен Сінклер

@Andy Що ти маєш на увазі під цим?
SRMR

Не використовуйте рішення, додане до цього питання. Методи джерел перегляду таблиць ніколи не повинні робити більше, ніж належить зробити. numberOfSectionsповинні повернути підрахунок, і це все. Те саме для numberOfRowsInSection. Їх можна назвати багато разів у будь-який час. Ніколи не оновлюйте представлення даних чи оновлюйте дані та не робіть нічого, крім повернення рахунку. Логіка оновлення поглядів ніколи не повинна бути в цих методах.
rmaddy

Відповіді:


206

Ви можете легко досягти цього, використовуючи backgroundViewвластивість UITableView.

Мета C:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    NSInteger numOfSections = 0;
    if (youHaveData)
    {
        yourTableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
        numOfSections                = 1;
        yourTableView.backgroundView = nil;
    }
    else
    {   
        UILabel *noDataLabel         = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, yourTableView.bounds.size.width, yourTableView.bounds.size.height)];
        noDataLabel.text             = @"No data available";
        noDataLabel.textColor        = [UIColor blackColor];
        noDataLabel.textAlignment    = NSTextAlignmentCenter;
        yourTableView.backgroundView = noDataLabel;
        yourTableView.separatorStyle = UITableViewCellSeparatorStyleNone;
    }

    return numOfSections;
}

Швидкий:

func numberOfSections(in tableView: UITableView) -> Int
{
    var numOfSections: Int = 0
    if youHaveData
    {
        tableView.separatorStyle = .singleLine
        numOfSections            = 1
        tableView.backgroundView = nil
    }
    else
    {
        let noDataLabel: UILabel  = UILabel(frame: CGRect(x: 0, y: 0, width: tableView.bounds.size.width, height: tableView.bounds.size.height))
        noDataLabel.text          = "No data available"
        noDataLabel.textColor     = UIColor.black
        noDataLabel.textAlignment = .center
        tableView.backgroundView  = noDataLabel
        tableView.separatorStyle  = .none
    }
    return numOfSections
}

Довідкова посилання на клас UITableView

backgroundView Власність

Фоновий вигляд подання таблиці.

Декларація

Швидкий

var backgroundView: UIView?

Ціль-С

@property(nonatomic, readwrite, retain) UIView *backgroundView

Обговорення

Фоновий вигляд таблиці таблиці автоматично змінюється відповідно до розміру подання таблиці. Цей вигляд розміщується як підзагляд подання таблиці за всіма осередками, поданнями заголовків та поданнями колонтитулів.

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


Дякую за відповідь! Чи означає це, що мені потрібна tableViewрозетка, щоб я могла це зробити yourTableView.backgroundView? Я використовую TableViewControllerтак, у мене зараз немає розетки для цього, тому мені цікаво.
СРМР

1
UITableViewControllerУ вас уже є властивість з назвою, tableViewтому вам не потрібно створювати його
Cihan Tek

Зрозумів, використовуючиself.tableView
SRMR

1
Корекція. Після подальшого тестування я фактично повинен був зробити так, щоб згаданий рядок повернув те саме значення. numOfSections = 1. Якщо я роблю його нульовим, а перегляд таблиці порожній, він працює, але коли я створюю комірку, а потім видаляю її, замість видалення та показу повідомлення, він руйнується із наступною помилкою. *** Закінчення програми через невиконаний виняток "NSInternalInconsistencyException", причина: "Внутрішня помилка UITableView: неможливо створити нову карту розділу зі старим числом розділів: 1 та новим числом розділів: 0". Я не знаю, чому повернення одного і того ж значення працює, але воно працює і працює як слід.
ChrisOSX

2
Не використовуйте цей розчин. Методи джерел перегляду таблиць ніколи не повинні робити більше, ніж належить зробити. numberOfSectionsповинні повернути підрахунок, і це все. Те саме для numberOfRowsInSection. Їх можна назвати багато разів у будь-який час. Ніколи не оновлюйте представлення даних чи оновлюйте дані та не робіть нічого, крім повернення рахунку. Логіка оновлення поглядів ніколи не повинна бути в цих методах.
rmaddy

107

Для Xcode 8.3.2 - Swift 3.1

Ось не дуже відомий, але неймовірно простий спосіб домогтися додавання перегляду "Без предметів" до подання порожньої таблиці, що повертається до Xcode 7. Я залишаю це вам, щоб контролювати цю логіку, яка додає / видаляє перегляд у фоновому режимі таблиці, але ось потік для та розкладу Xcode (8.3.2):

  1. Виберіть сцену на Дошці розгортки, на якій розміщено ваш стіл.
  2. Перетягніть порожній UIView до "Доку сцени" цієї сцени

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

  1. Додайте UILabel та будь-які обмеження до нового представлення даних, а потім створіть IBOutlet для цього подання

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

  1. Призначте це подання tableView.backgroundView

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

  1. Ось магія!

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

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


1
Ця методика працює для всього, для чого вам потрібен простий погляд. Я також використовував його для спеціальних заголовків розділів таблиці. Дійсно, ви можете використовувати його для всього, що вам потрібно для перегляду. Просто посилайтесь через IBOutlet і додайте його як підвідне місце, де вам потрібен спеціальний вид.
Пол Бонневіль

Як сказав @gmogames, після того, як я робив IOS за 2 роки, це вперше відомо про фон tableView !. спасибі людина
Алі Аділ

1
Дякую за це Щоб викласти його там, мені довелося використовувати tableView.separatorStyle = .none та змінити розмір UIView за замовчуванням, щоб побачити backgroundView. Я використовую Xcode 9.4 за допомогою Swift 4.
Hammad Tariq

Як розмістити спеціальний вигляд?
Nol4635

1
@ Nol4635 У випадку фону перегляду таблиці ви просто призначите представлення, створене вами як IBOutlet, на тлі таблиці перегляду, або, якщо ви просто хочете додати перегляд до будь-якого іншого виду, ви можете просто додати його як підпогляд. Вам доведеться встановити значення кадру, але це як і будь-який інший вид.
Пол Бонневіль

30

Швидка версія вищевказаного коду: -

func numberOfSectionsInTableView(tableView: UITableView) -> Int {

    var numOfSection: NSInteger = 0

    if CCompanyLogoImage.count > 0 {

        self.tableView.backgroundView = nil
        numOfSection = 1


    } else {

        var noDataLabel: UILabel = UILabel(frame: CGRectMake(0, 0, self.tableView.bounds.size.width, self.tableView.bounds.size.height))
        noDataLabel.text = "No Data Available"
        noDataLabel.textColor = UIColor(red: 22.0/255.0, green: 106.0/255.0, blue: 176.0/255.0, alpha: 1.0)
        noDataLabel.textAlignment = NSTextAlignment.Center
        self.tableView.backgroundView = noDataLabel

    }
    return numOfSection
}

Але якщо ви завантажуєте інформацію з JSON, вам потрібно перевірити, чи JSON порожній чи ні, для цього, якщо ви поставите такий код, він спочатку показує повідомлення "Без даних", а потім зникає. Тому що після перезавантаження даних таблиця повідомлення ховається. Таким чином, ви можете помістити цей код, куди завантажують дані JSON у масив. ТАК :-

func numberOfSectionsInTableView(tableView: UITableView) -> Int {

    return 1
}

func extract_json(data:NSData) {


    var error: NSError?

    let jsonData: AnyObject? = NSJSONSerialization.JSONObjectWithData(data, options:NSJSONReadingOptions.MutableContainers , error: &error)
    if (error == nil) {
        if let jobs_list = jsonData as? NSArray
        {
            if jobs_list.count == 0 {

                var noDataLabel: UILabel = UILabel(frame: CGRectMake(0, 0, self.tableView.bounds.size.width, self.tableView.bounds.size.height))
                noDataLabel.text = "No Jobs Available"
                noDataLabel.textColor = UIColor(red: 22.0/255.0, green: 106.0/255.0, blue: 176.0/255.0, alpha: 1.0)
                noDataLabel.textAlignment = NSTextAlignment.Center
                self.tableView.backgroundView = noDataLabel

            }

            for (var i = 0; i < jobs_list.count ; i++ )
            {
                if let jobs_obj = jobs_list[i] as? NSDictionary
                {
                    if let vacancy_title = jobs_obj["VacancyTitle"] as? String
                    {
                        CJobTitle.append(vacancy_title)

                        if let vacancy_job_type = jobs_obj["VacancyJobType"] as? String
                        {
                            CJobType.append(vacancy_job_type)

                            if let company_name = jobs_obj["EmployerCompanyName"] as? String
                            {
                                CCompany.append(company_name)

                                    if let company_logo_url = jobs_obj["EmployerCompanyLogo"] as? String
                                    {
                                        //CCompanyLogo.append("http://google.com" + company_logo_url)

                                        let url = NSURL(string: "http://google.com" + company_logo_url )
                                        let data = NSData(contentsOfURL:url!)
                                        if data != nil {
                                            CCompanyLogoImage.append(UIImage(data: data!)!)
                                        }

                                        if let vacancy_id = jobs_obj["VacancyID"] as? String
                                        {
                                            CVacancyId.append(vacancy_id)

                                        }

                                    }

                            }

                        }
                    }
                }
            }
        }
    }
    do_table_refresh();


}

func do_table_refresh() {

    dispatch_async(dispatch_get_main_queue(), {
        self.tableView.reloadData()
        return
    })
}

Це дуже добре працює для відображення мітки, коли даних немає в рядках. Однак який найкращий спосіб впоратися, коли дані надходять і self.tableView.reloadData()викликаються? Я виявив, що він додає мої нові рядки, але noDataLabelпід ними все ще відображається.
tylerSF

1
Якщо в масиві є елемент, який ви просто встановили self.tableView.backgroundView = nil
Chathuranga Silva

if jobs_list.count == 0 {// додати вище вказаний код} else {self.tableView.backgroundView = nil}
Chathuranga Silva

досконалий. додаючи self.tableView.backgroundView = nilв моє, якщо заява перед тим, як return jobs_list.count працює. спасибі
tylerSF

У цій відповіді не використовуйте перше рішення. Методи джерел перегляду таблиць ніколи не повинні робити більше, ніж належить зробити. numberOfSectionsповинні повернути підрахунок, і це все. Те саме для numberOfRowsInSection. Їх можна назвати багато разів у будь-який час. Ніколи не оновлюйте представлення даних чи оновлюйте дані та не робіть нічого, крім повернення рахунку. Логіка оновлення поглядів ніколи не повинна бути в цих методах.
rmaddy

6

Ви можете спробувати цей контроль. Це досить акуратно. DZNEmptyDataSet

Або якби я був ти, я все робив би

  • Перевірте, чи пустий масив даних порожній
  • Якщо він порожній, тоді додайте до нього один об’єкт під назвою @ "Без даних"
  • Відобразити цей рядок у cell.textLabel.text

Простенька


5

Swift 3 (оновлено):

override func numberOfSections(in tableView: UITableView) -> Int {
    if myArray.count > 0 {
        self.tableView.backgroundView = nil
        self.tableView.separatorStyle = .singleLine
        return 1
    }

    let rect = CGRect(x: 0,
                      y: 0,
                      width: self.tableView.bounds.size.width,
                      height: self.tableView.bounds.size.height)
    let noDataLabel: UILabel = UILabel(frame: rect)

    noDataLabel.text = "Custom message."
    noDataLabel.textColor = UIColor.white
    noDataLabel.textAlignment = NSTextAlignment.center
    self.tableView.backgroundView = noDataLabel
    self.tableView.separatorStyle = .none

    return 0
}

Не використовуйте цей розчин. Методи джерел перегляду таблиць ніколи не повинні робити більше, ніж належить зробити. numberOfSectionsповинні повернути підрахунок, і це все. Те саме для numberOfRowsInSection. Їх можна назвати багато разів у будь-який час. Ніколи не оновлюйте представлення даних чи оновлюйте дані та не робіть нічого, крім повернення рахунку. Логіка оновлення поглядів ніколи не повинна бути в цих методах.
rmaddy

Я згоден. Це рішення можна вдосконалити, але воно також може бути використане.
Теодор Цюрару

Як ви можете погодитися, що ви не повинні використовувати це рішення, а потім заявити, що це також можна використовувати? Це суперечність.
rmaddy

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

5

Swift3.0

Я сподіваюся, що це сервер вашого призначення ...... У вашому UITableViewController.

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    if searchController.isActive && searchController.searchBar.text != "" {
        if filteredContacts.count > 0 {
            self.tableView.backgroundView = .none;
            return filteredContacts.count
        } else {
            Helper.EmptyMessage(message: ConstantMap.NO_CONTACT_FOUND, viewController: self)
            return 0
        }
    } else {
        if contacts.count > 0 {
            self.tableView.backgroundView = .none;
            return contacts.count
        } else {
            Helper.EmptyMessage(message: ConstantMap.NO_CONTACT_FOUND, viewController: self)
            return 0
        }
    }
}

Клас помічника з функцією:

 /* Description: This function generate alert dialog for empty message by passing message and
           associated viewcontroller for that function
           - Parameters:
            - message: message that require for  empty alert message
            - viewController: selected viewcontroller at that time
         */
        static func EmptyMessage(message:String, viewController:UITableViewController) {
            let messageLabel = UILabel(frame: CGRect(x: 0, y: 0, width: viewController.view.bounds.size.width, height: viewController.view.bounds.size.height))
            messageLabel.text = message
            let bubbleColor = UIColor(red: CGFloat(57)/255, green: CGFloat(81)/255, blue: CGFloat(104)/255, alpha :1)

            messageLabel.textColor = bubbleColor
            messageLabel.numberOfLines = 0;
            messageLabel.textAlignment = .center;
            messageLabel.font = UIFont(name: "TrebuchetMS", size: 18)
            messageLabel.sizeToFit()

            viewController.tableView.backgroundView = messageLabel;
            viewController.tableView.separatorStyle = .none;
        }

Не використовуйте цей розчин. Методи джерел перегляду таблиць ніколи не повинні робити більше, ніж належить зробити. numberOfSectionsповинні повернути підрахунок, і це все. Те саме для numberOfRowsInSection. Їх можна назвати багато разів у будь-який час. Ніколи не оновлюйте представлення даних чи оновлюйте дані та не робіть нічого, крім повернення рахунку. Логіка оновлення поглядів ніколи не повинна бути в цих методах.
rmaddy

3

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

Я б не рекомендував використовувати UITableViewCell, щоб це зробити, можливо, вам потрібно буде додати додаткові речі в майбутньому, і вони можуть швидко стати некрасивими.

Ви також можете зробити щось подібне, але це не найкраще рішення.

UIWindow* window = [[UIApplication sharedApplication] keyWindow];
[window addSubview: OverlayView];

Дякуємо за колір, навколо якого найелегантніший спосіб втілення, завжди хороший спосіб подумати про це. Я можу спробувати змінити мою раскадровку, щоб використати UIViewControllera UITableView.
СРМР

1
Це найбільш захищений від майбутнього спосіб. Я ніколи не використовував UITableViewControllerсебе, тому що використовувати його насправді не набагато простіше, ніж робити це по-іншому, але це обмежує вашу здатність змінювати речі в майбутньому.
Cihan Tek

Це не є надійним для майбутнього, якщо у вас є напівпрозорі планки. Дуже рекомендую проти. Як мінімум, зробіть UIViewController, який містить UITableViewController, і коригує речі відповідно.
xtravar

3

Використовуйте цей код у своєму numberOfSectionsInTableViewметоді: -

if ([array count]==0
{

    UILabel *fromLabel = [[UILabel alloc]initWithFrame:CGRectMake(50, self.view.frame.size.height/2, 300, 60)];                                                                                        
    fromLabel.text =@"No Result";
    fromLabel.baselineAdjustment = UIBaselineAdjustmentAlignBaselines;
    fromLabel.backgroundColor = [UIColor clearColor];
    fromLabel.textColor = [UIColor lightGrayColor];
    fromLabel.textAlignment = NSTextAlignmentLeft;
    [fromLabel setFont:[UIFont fontWithName:Embrima size:30.0f]];
    [self.view addSubview:fromLabel];
    [self.tblView setHidden:YES];
}

1
Не використовуйте цей розчин. Методи джерел перегляду таблиць ніколи не повинні робити більше, ніж належить зробити. numberOfSectionsповинні повернути підрахунок, і це все. Те саме для numberOfRowsInSection. Їх можна назвати багато разів у будь-який час. Ніколи не оновлюйте представлення даних чи оновлюйте дані та не робіть нічого, крім повернення рахунку. Логіка оновлення поглядів ніколи не повинна бути в цих методах.
rmaddy

2

SWIFT 3

        let noDataLabel: UILabel     = UILabel(frame: CGRect(x: 0, y: 0, width: tableView.bounds.size.width, height: tableView.bounds.size.height))
        noDataLabel.text             = "No data available"
        noDataLabel.textColor        = UIColor.white
        noDataLabel.font             = UIFont(name: "Open Sans", size: 15)
        noDataLabel.textAlignment    = .center
        tableView.backgroundView = noDataLabel
        tableView.separatorStyle = .none

2

Якщо ви не використовуєте нижній колонтитул перегляду таблиці і не хочете, щоб перегляд таблиці заповнював екран порожніми клітинками таблиці за замовчуванням, я б запропонував вам встановити нижній колонтитул таблиці на порожній UIView. Я не знаю правильного синтаксису для цього в obj-c або Swift, але в Xamarin.iOS я зробив би це так:

public class ViewController : UIViewController
{
    UITableView _table;

    public ViewController (IntPtr handle) : base (handle)
    {
    }

    public override void ViewWillAppear(bool animated) {
        // Initialize table

        _table.TableFooterView = new UIView();
    }
}

Вищенаведений код призведе до перегляду таблиці без порожніх комірок


2

Ось рішення, яке працювало на мене.

  1. Додайте наступний код у новий файл.

  2. Змініть свій клас таблиці на спеціальний клас "MyTableView" з аркуша розкадрів або .xib

(це працюватиме лише для першого розділу. Якщо ви хочете налаштувати більше, внесіть зміни у функцію MyTableView reloadData () відповідно для інших розділів)

public class MyTableView: UITableView {

    override public func reloadData() {
        super.reloadData()

        if self.numberOfRows(inSection: 0) == 0 {
            if self.viewWithTag(1111) == nil {
                let noDataLabel = UILabel()
                noDataLabel.textAlignment = .center
                noDataLabel.text = "No Data Available"
                noDataLabel.tag = 1111
                noDataLabel.center = self.center
                self.backgroundView = noDataLabel
            }

        } else {
            if self.viewWithTag(1111) != nil {
                self.backgroundView = nil
            }
        }
    }
}

Це хороший підхід. Я додав наступне вдосконалення, щоб зробити його більш чітким. 1. Стиль розділювача кешу табличного перегляду та відновлення його при переході в порожній / не порожній стан, щоб зробити цей підклас застосованим для випадків використання, бажані різні стилі роздільника. 2. Додайте @IBInspectable var emptyStateText: String?та позначте цей клас, оскільки @IBDesignableтоді ви зможете змінити різний порожній текст стану для різних сцен на аркуші розкадрів чи xibs. Насолоджуйтесь! :)
Егіст Лі

1

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


1

Якщо ви хочете зробити це без будь-якого коду, спробуйте це!

Клацніть на таблицю перегляду.

tableView Скріншот

Змініть стиль з "звичайного" на "групового".

Скріншот властивостей табличного перегляду-2

Тепер, коли ви використовуєте….

tableView.backgroundView = ВСТАВИТИ СВОЙ ЕТИКЕТ АБО ВИГОТОВЛЕННЯ

Це не покаже роздільники!


1

Додайте цей код в один файл і змініть тип колекції на CustomCollectionView

import Foundation

class CustomCollectionView: UICollectionView {

  var emptyModel = EmptyMessageModel()
  var emptyView: EmptyMessageView?
  var showEmptyView: Bool = true

  override func reloadData() {
    super.reloadData()

    emptyView?.removeFromSuperview()
    self.backgroundView = nil

    if !showEmptyView {
      return
    }

    if numberOfSections < 1 {
      let rect = CGRect(x: 0,
                        y: 0,
                        width: self.bounds.size.width,
                        height: self.bounds.size.height)

      emptyView = EmptyMessageView()
      emptyView?.frame = rect
      if let emptyView = emptyView {
        //                self.addSubview(emptyView)
        self.backgroundView = emptyView
      }
      emptyView?.setView(with: emptyModel)

    } else {
      emptyView?.removeFromSuperview()
      self.backgroundView = nil
    }
  }
}

class EmptyMessageView: UIView {

  @IBOutlet weak var messageLabel: UILabel!
  @IBOutlet weak var imageView: UIImageView!

  var view: UIView!

  override init(frame: CGRect) {
    super.init(frame: frame)
    xibSetup()
  }

  required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    xibSetup()
  }

  func xibSetup() {
    view = loadViewFromNib()

    view.frame = bounds

    view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
    addSubview(view)
  }

  func loadViewFromNib() -> UIView {

    let bundle = Bundle(for: type(of: self))
    let nib = UINib(nibName: "EmptyMessageView", bundle: bundle)
    let view = nib.instantiate(withOwner: self, options: nil)[0] as! UIView

    return view
  }

  func setView(with model: EmptyMessageModel) {
    messageLabel.text = model.message ?? ""
    imageView.image = model.image ?? #imageLiteral(resourceName: "no_notification")
  }
}

///////////
class EmptyMessageModel {
  var message: String?
  var image: UIImage?

  init(message: String = "No data available", image: UIImage = #imageLiteral(resourceName: "no_notification")) {
    self.message = message
    self.image = image
  }
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.