2014-01-03 3 views
0

Готов сделать дурака из себя:PushWoosh UIWebView

У меня есть этот скелет приложения, который имеет классы уведомлений PushWoosh на месте. Он работает нормально. Я могу отправить push-сообщение в мое приложение.

Для этого, чтобы работать, в моей AppDelegate, есть метод, называемый

- (void) onPushAccepted:(PushNotificationManager *)pushManager withNotification:(NSDictionary *)pushNotification 

, что позволяет мне выстрелить вещи, когда уведомление принято.

Между тем, в моем ViewController, у меня есть метод, как это:

-(void)loadURL{ 
    NSLog(@"testing"); 
    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:TOPIC]]]; 
    [webView reload]; 
} 

Это один работает хорошо, когда вызывается из самого ViewController.

Однако, когда я пытаюсь вызвать этот метод из метода onPushAccepted в appDelegate, webView не отображает нужный URL, хотя, как указано в журнале, вызванный метод вызван.

Я предполагаю, что это показывает, что мне не хватает фундаментального понимания работы всего этого.

Поэтому я был бы доволен некоторыми строками, которые могли бы сделать эту работу, но я был бы очень доволен объяснением причин и причин этого.

Я попытался поместить onPushAccepted: в ViewController, но это не сработало, хотя я включил в «ViewController.m» необходимый «PushNotificationManager.h».

Я смущен и нуждаюсь в вашей помощи.

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

Спасибо заранее!

+0

Поместите контрольную точку в методе и проверьте значение 'webview' в инспекторе переменных. Вероятно, 'webview'' nil' –

+0

ОК, и если да, что мне делать? – Sjakelien

+0

Как вы называете '- (void) loadURL' из AppDelegate? –

ответ

0

В этом конкретном случае Sjakelien использовал приложение с одним представлением. Путаница заключалась в том, что попытка создать экземпляр ViewController в AppDelegate путем выполнения следующих ViewController * vc = [[ViewController alloc]init]; [vc loadURL]; не сработала.

В этом случае решения является получить ViewController, который отображается на экране с помощью

- (void) onPushAccepted:(PushNotificationManager *)pushManager withNotification:(NSDictionary *)pushNotification { 
    ViewController *vc = (ViewController*)self.window.rootViewController; 
    [vc loadURL]; 
} 

приложений с другой установкой, такие как UINavigationController необходимости принятия различных мер.

Несколько вариантов:

  • popToRootViewController и создавать новый экземпляр ViewController и толкают его на навигационном стек

  • Нажмите новый экземпляр ViewController на навигационной стеку без использования popToRootViewController

  • Предоставлено ViewController в модальном
  • Изменить модель приложения
+0

Спасибо, Хьюго. Для тех людей, которые имеют такой же жалкий уровень навыков программирования: все это означает, что вместо того, чтобы создавать новый вид, вам необходимо просканировать весь существующий вид для отправки вашего сообщения. Следующий шаг для меня: уделять больше внимания существованию rootViewController и всей парадигме, связанной с этим явлением. Я глубоко смущен. – Sjakelien

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