Ошибка утверждения с помощью MBProgressHUD – вид не должен быть nil

Я пытаюсь использовать MBProgressHUD в приложении. Я получаю ошибку в точке, где HUD добавляется в представление.

Это код, который добавляет индикатор выполнения в представление.

 HUD = [[MBProgressHUD alloc] initWithView:self.navigationController.view]; [self.view.window addSubview:HUD]; // Set determinate mode HUD.mode = MBProgressHUDModeAnnularDeterminate; HUD.labelText = @"Loading"; // myProgressTask uses the HUD instance to update progress [HUD showWhileExecuting:@selector(processFieldEntries) onTarget:self withObject:nil animated:YES]; 

Ошибки приложения:

 *** Assertion failure in -[MBProgressHUD initWithView:], /Users/.../MBProgressHUD/MBProgressHUD.m:190 

Также

 *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'View must not be nil.' 

А также

 Crash: View must not be nil. 

Кто-нибудь знает, для чего происходит отказ утверждения и как его решить. Файл MBProgressHUD.m включен в источники компиляции на вкладке «Сборка фаз» и заголовок, включенный в файл. Прогресс добавляется к процессу обработки проверки поля.

Привет, вот быстрый совет на дисплее HUD.

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

например, если ваш в основном контроллере представления или модальном и т. д. сделать что-то вроде этого:

 HUD = [[MBProgressHUD alloc] initWithView:self.view]; [self.view addSubview:HUD]; 

обратите внимание, что вы добавляете его в тот же вид, с которого вы его инициализировали.

также обратите внимание, что вы можете использовать его в других представлениях, а также: self.navigationcontroller.view, self.splitviewcontroller.view или мой любимый: self.splitviewcontroller.view.superview (чтобы покрыть и отключить обе стороны представления).

Я думаю, что ваша проблема будет решена сама собой, если вы последуете примеру init с правильным представлением для вашего приложения.

всего хорошего.

Где вы используете этот фрагмент кода? Если вы предоставите некоторые другие детали, я могу вам помочь. Тем временем, ожидая некоторых подробностей, я могу дать вам несколько советов по вашей проблеме.

Я предполагаю, что когда вы создаете MBProgressHUD

 HUD = [[MBProgressHUD alloc] initWithView:self.navigationController.view]; 

view вашего контроллера навигации равен nil и, следовательно, проблема.

Если вы перемещаете код MBProgressHUD ( MBProgressHUD.m ), вы можете видеть, что существует контрольная проверка:

 NSAssert(view, @"View must not be nil."); 

и поэтому код останавливается, так как он не передает управление.

Чтобы сделать эту работу, вам необходимо передать представление, отличное от nil .

Если вы создали класс, который расширяет UIViewController (например), вы можете представить метод HUD в viewDidAppear . Там вы уверены, что view для вашего контроллера просмотра было создано и отображено.

Кроме того, добавьте HUD в качестве подсмотра окна. Для получения дополнительной информации вы можете видеть, что MBProgressHUD не отображается .

Надеюсь, это поможет.

  • Вернитесь к контроллеру из SKScene
  • UINavigationBar перемещается по строке состояния, когда другой viewController скрывает строку состояния
  • просмотр таблицы просмотра контроллера разделенного вида
  • UICollectionView с UIViewController в качестве источника данных
  • Table View Controller каждая строка, подключенная к другому контроллеру представления
  • iOS Swift popToViewController по имени
  • Увольнение ViewController показано как Popover segue изнутри другого Popover
  • Static 3D Touch не показывает навигацию и панель вкладок после обеда
  • «логика» в режиме просмотра или просмотра?
  • NSMutableArray removeObjectAtIndex
  • IOS. Попытка представить UIAlertController на UIViewController, чей вид отсутствует в иерархии окон
  • Давайте будем гением компьютера.