Отображать UIImage вместо TableView, если пусто

#iphone #objective-c #cocoa-touch #uitableview #uiimageview

#iPhone #objective-c #cocoa-touch #uitableview #uiimageview

Вопрос:

У меня есть NSFetchResultsController, который загружает мой tableview.

При первой загрузке приложения в tableview не будет данных для отображения, поэтому я хочу иметь статическое изображение с инструкциями по нему. У меня есть следующий код, и я вызываю этот метод, viewWillAppear но он работает неправильно. Есть идеи?

 - (void)checkIfEmpty
{
    if ([self.fetchedResultsController fetchedObjects] > 0)
    {
        self.defaultImage.hidden = NO;
        self.logTableView.hidden = YES;
    }
    else
    {
        self.defaultImage.hidden = YES;
        self.logTableView.hidden = NO;
    }
}
  

Комментарии:

1. что происходит? что вы видите?

2. «Это неправильно работает» не очень полезно. Что именно он делает, происходит ли сбой, всегда ли он переходит в первую ветвь if инструкции, … ваш вопрос недостаточно подробен, чтобы на него можно было ответить должным образом

3. Я предполагаю, что у вас есть UIViewController с таблицей внутри него, а не UITableViewController, я прав?

Ответ №1:

[self.fetchedResultsController fetchedObjects] > 0 всегда будет true, потому что даже пустой массив является объектом (и нет nil ).

Вам нужно использовать self.fetchedResultsController.fetchedObjects.count > 0 вместо этого.

Ответ №2:

Попробуйте поместить тот же код в viewDidAppear . Попробуйте использовать alpha = 0 вместо hidden . Попробуйте поместить тот же код в один из ваших методов делегирования tableview. Поскольку вы не объясняете, что именно происходит, я просто выбрасываю туда материал.