2017-01-11 4 views
0

Как бы вы структурировали приложение, подобное этому, когда нет данных таблицыView, которые показывают другой диспетчер представлений?Как показать еще один диспетчер представлений, если данные таблицыView пустые

Веб-сайт показывает способы отображения сообщения, если в представлении таблицы нет данных, но мне нужно показать другое представление. Этот viewcontroller (PlaceholderVC) имеет изображение и ярлык (страница со стилем 404 и т. Д.).

В основном на первом экране (начальном) пользователь вводит кнопку, чтобы перейти к таблицеView. В навигационной панели элемент позволяет создать новую ячейку таблицы (данные). Другого способа создать этот элемент нет, если вы не перейдете на контроллер tableView (FeedVC). Я изо всех сил стараюсь правильно работать. То, что я реализовал много ошибок:

//FeedVC 
let data = [] 
viewDidLoad() { 
[...] 
} 

numberOfRowsInSection { 
    if data.count == 0 { 
    showPlaceholderVC() 
    } else { 
    return data.count 
    } 
} 

func showPlaceholderVC() { 
    let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 
    let pc: PlaceholderVC = storyboard.instantiateViewController(withIdentifier: "placeholderVC") as! PlaceholderVC 
    self.showDetailViewController(pc, sender: Any?.self) 
} 

Это было бы взять меня к PlaceholderVC. То, что PlaceholderVC может также present VC создать новую ячейку таблицы. Когда я нажимаю save, он отклоняется и возвращается к PlaceholderVC. Я мог бы изменить функцию сохранения на presentFeedVC, но я чувствую себя правильно, это должно быть dismiss(). Если data > 0 и я создаю новые данные, то сохранение func все равно будет присутствовать. Посмотрите, что происходит? Сохранить следует запустить код, а затем убрать. Я не хочу добавлять слой поверх слоя.

У меня мог бы быть чистый код, если бы я мог добавить скрытое изображение и надпись на tableView. Это возможно? Когда я перетаскиваю изображение по таблицеView, он сжимается.

Я мог бы заставить все это работать, но будет слишком много «ifs» - это все VC со многими «подарками».

+0

вы можете иметь изображение над Tableview, вам просто нужно правильно установить ограничения и убедитесь, что вы используете UIViewController и не UITableViewController – Paulw11

+0

Позвольте мне попробовать. – Sylar

+0

@ Paulw11 Я думаю, что буду использовать ваш подход. Вместо этого я использовал представление и поместил его ниже моего таблицы (здесь работает автоматический макет). Затем в контроллере: 'if data == 0, view.isHidden = true/false' Это лучше для меня. Благодарю. – Sylar

ответ

0

Согласно вы выдаете вам необходимо выполнить следующие действия:

  1. Если вы звоните WebService, то первый звонок вебсервис на получение проверки ответа размера массива. Если размер массива> 0 означает, что вы можете отображать данные в таблице, и если массив пуст, вам необходимо перейти по умолчанию или к контроллеру-заполнителю.
+0

Пробовал, что раньше. Placeholdervc создает vc для создания данных. Когда я нажимаю «Сохранить», он возвращается к месту хранения. – Sylar

0

Вы хотите всегда нажимать отдельный контроллер просмотра для отображения текста-заполнителя?

Если нет, вы можете иметь tableView как subView основного вида и placeholderView снова как subview основного вида.

Вы можете скрыть и показать tableView в зависимости от данных.

Если вам разрешено использовать библиотеку третьей стороны в код, вы можете обратиться DZNEmptyDataSet

0

По мне, принимая Hidden View (с тем, что вы хотите, чтобы показать, когда нет данных) лучше всего подходят. это может быть как:

@IBOutlet weak var mEmptyView: UIView! 
@IBOutlet weak var mTableView: UITableView! 
    var tableViewDataArray: [String] = [] 


    override func viewDidLoad() { 
     super.viewDidLoad() 
    tableViewDataArray = //get array from your resource// 
    if tableViewDataArray.count > 0 { 
    mEmptyView.hidden = false 
    mTableView.hidden = true 
    }else{ 
    mEmptyView.hidden = true 
    mTableView.hidden = false 
    } 


} 
Смежные вопросы