2013-04-24 5 views
-1

Я пытаюсь создать диалоговое окно в приложении iOS (приложение - приложение PhoneGap).Диалоговое окно iOS не работает

Я использую код с этого поста: how to implement a pop up dialog box in iOS

Ниже приведен код, который находится в ссылке

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"No network connection" 
               message:@"You must be connected to the internet to use this app." 
               delegate:nil 
             cancelButtonTitle:@"OK" 
             otherButtonTitles:nil]; 
[alert show]; 

Я поставил этот код в AppDelegate.m в методе

- (BOOL)application:(UIApplication)...

Приложение запускается, но диалоговое окно не отображается.

В чем проблема?


Я обновил код, как показано ниже

ниже код находится в моем appdelegate.m

//reachability code 

if (networkStatus == ReachableViaWifi) 
{ 
    while (true) 
     //show progress bar 
} 
else 
{ 
    UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"title" message:@"message" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:@"cancel", nil]; 
    [alert show]; 
} 

коробка предупреждение не появляется. Что я делаю не так?

+0

, с какого метода вы показываете AlertView? показать полный код. – nsgulliver

+0

@nsgulliver не является приложением метода? – aagarwal

+0

AppDelegate реализует протокол под названием [UIApplicationDelegate] (http://developer.apple.com/library/ios/# documentation/uikit/reference/UIApplicationDelegate_Protocol/Reference/Reference.html), этот делегат имеет много методов, которые вы можете видеть в своем делетете. они начинаются с ** заявки ** – nsgulliver

ответ

0

Я полагаю, что это потому, что ваш код находится над строкой [self.window makeKeyAndVisible];.

Попробуйте перевести код для предупреждения после этой строки.

0

Вы должны добавить код в свой MainViewController.m (или другой файл UIViewController .m) и в зависимости от того, какое поведение вы хотите добавить в код -(void)viewDidLoad или -(void)viewDidAppear.

+0

Я хочу, чтобы иметь возможность вызвать диалог в моем appdelegate на самом деле, как бы я это сделал. От вас ответили, что я понял, что я бы поместил код UIAlerView * alert = ..... в методы viewDidAppear - (void) viewDidLoad или - (void), и я бы вызвал это диалоговое окно в своем делете приложения, используя [alert show ] ;. Является ли моя интерпретация правильной? – aagarwal

+0

Вы можете добавить код UIAlertView внутри метода: '- (BOOL) application: (UIApplication *) application doneFinishLaunchingWithOptions: (NSDictionary *) launchOptions'. Из того, что я прочитал в ваших комментариях, вы добавили код внутри '- (void) applicationDidFinishLaunching: (UIApplication *) application' этот метод используется для ранней версии iOS для iOS 3.0+, вы должны использовать первый метод. – danypata

0

Для предупреждения диалога IOS, в вашем AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"No network connection" 
              message:@"You must be connected to the internet to use this app." 
              delegate:nil 
              cancelButtonTitle:@"OK" 
              otherButtonTitles:nil]; 
[alert show]; 
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
self.window.rootViewController = [[ViewController alloc] initWithNibName:@"ViewController_iPhone" bundle:nil]; 
[self.window makeKeyAndVisible]; 
return YES; 
} 

Поскольку вы упомянули вы используете PhoneGap, они будут обращаться в окно с предупреждением для вас на различных платформах. Вы могли бы использовать следующий код в одном из ваших страниц HTML

function showAlert() { 
    navigator.notification.alert(
     'You must be connected to the internet to use this app.', 
     null,  
     'No network connection',    
     'OK'     
    ); 
} 
+0

На самом деле я хочу позвонить в это окно оповещений в моем делете делегата. Как мне это сделать? – aagarwal

+0

Изменено сообщение для запуска в appdelegate – zimmryan

1

Вы можете показать UIAlertView в AppDelegate, если вы все сделали правильно, , но вы не можете выйти из приложения, используя exit() метод, это не правильно практика в iOS для выхода из приложения самостоятельно. В основном ваш AppDelegate реализует протокол UIApplicationDelegate, этот протокол имеет много методов.

Попробуйте показать свой AlertView в разных методах в AppDelegate.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 

    UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"title" message:@"message" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:@"cancel", nil]; 
    [alert show]; 

    // other code... 
} 

ИЛИ в

- (void)applicationDidBecomeActive:(UIApplication *)application { 

    UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"title" message:@"message" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:@"cancel", nil]; 
    [alert show]; 
} 

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

+0

См. Редактирование. Ваш первый пример кода не работает. – aagarwal

+0

Что вы подразумеваете под первым образцом, не работает? второй работает? попробуйте переместить его после инициализации окна. – nsgulliver

+0

Я никогда не пробовал второй пример. Когда я говорю, что первый образец не работает, я имел в виду, что ничего не происходит. Поле предупреждения не отображается. – aagarwal

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