IOS Push ViewController из AppDelegate.h - PullRequest
       0

IOS Push ViewController из AppDelegate.h

1 голос
/ 16 января 2012

Я использую StoryBoard, которая содержит различные ViewController и TableViewController, в частности, ImageViewController, который просто отображает изображение. Мой DetailViewController содержит UIWebView, здесь у меня есть ссылка, при нажатии я пытаюсь загрузить свой ImageViewController.

Ссылка

Просмотр изображения

`

В AppDelegate.m я получаю значение имени файла, обрабатывая handleOpenURL.

Я новичок в IOS и изо всех сил пытаюсь загрузить ImageViewController из метода handleOpenURL в AppDelegate.m.

Мой код:

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url 

{

NSString *param = [keyValueParm objectForKey:@"filename"];
NSLog(@"Param: %@",param);

ImageViewController *imageViewController =[[ImageViewController alloc]init];
imageViewController.imageString = param;

UIViewController *root = self.window.rootViewController;
[root.navigationController pushViewController:imageViewController animated:YES];
return true;

}

В настоящее время ничего не происходит.

Ответы [ 2 ]

0 голосов
/ 16 января 2012

Берегите себя, этот метод исчерпан: http://developer.apple.com/library/ios/#documentation/uikit/reference/UIApplicationDelegate_Protocol/Reference/Reference.html

Кроме того, убедитесь, что у вас есть приложение-делегат приложения: didFinishLaunchingWithOptions: метод для возврата YES или если ваш делегат реализует applicationDidFinishLaunching :, ваш код не будет вызван:

Этот метод не вызывается, если делегат возвращает NO из своей реализации приложения: didFinishLaunchingWithOptions: method. если ваше приложение реализует метод applicationDidFinishLaunching: вместо application: didFinishLaunchingWithOptions:, этот метод вызывается для открытия указанного URL-адреса после инициализации приложения.

0 голосов
/ 16 января 2012

Вы не должны реализовывать метод application:handleOpenURL:. Он не только устарел, но и просит делегата приложения разрешить открытие URL-адреса в браузере.

Вместо этого вы хотите реализовать протокол UIWebViewControllerDelegate в DetailViewController. В частности, вы должны реализовать метод – webView:shouldStartLoadWithRequest:navigationType:. В нем:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
   [ImageViewController *imageViewController =[[ImageViewController alloc]init];
   imageViewController.imageString = param;
   [root.navigationController pushViewController:imageViewController animated:YES];

   return YES;
} 

В этом методе экземпляр UIWebView запрашивает у своего делегата разрешение на открытие URL.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...