WebView не отвечает при вызове из метода - PullRequest
0 голосов
/ 18 апреля 2010

У меня есть приложение с вкладкой и веб-просмотром. Я пытаюсь заставить приложение возвращаться к URL по умолчанию каждый раз, когда пользователь нажимает на панель. Прямо сейчас я перехватываю нажатия и запускаю метод, однако это не влияет на мое веб-представление (оно не загружает страницу). Метод работает правильно при вызове из класса, но не при вызове из моего делегата приложения, где я перехватываю нажатия.

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

Вот код:

Второй заголовок представления (где находится WebView)

@interface SecondViewController : UIViewController {
IBOutlet UIWebView *secondView;
}
- (void) goToPage;

Реализация второго вида

#import "SecondViewController.h"
@implementation SecondViewController
- (void)awakeFromNib 
{
    [self goToPage];
}

- (void) goToPage
{
    NSLog(@"go to page");
    NSString *newURL = [NSString stringWithFormat:@"http://pageurl"];
    [secondView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:newURL]]];
}

Мой делегат приложения, где я вызываю метод класса SecondViewController:

#import "RedDragonAppDelegate.h"
#import "SecondViewController.h"

@implementation RedDragonAppDelegate

@synthesize window;
@synthesize rootController;

- (void)applicationDidFinishLaunching:(UIApplication *)application {    
    // Override point for customization after application launch
    [window addSubview:rootController.view];
}

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {

    NSLog(@"didSelectViewController %d", rootController.selectedIndex);

    SecondViewController * sv = [[SecondViewController alloc] init];

    if (rootController.selectedIndex == 0){
        //NSLog(@"if in didSelectViewController 0");
    } else if (rootController.selectedIndex == 1) {
        //NSLog(@"if in didSelectViewController 1");
        [sv goToPage];
    }
}

Спасибо за вашу помощь!

1 Ответ

1 голос
/ 20 апреля 2010

Если я правильно понимаю, у вас есть экземпляр SecondViewController с secondView, подключенный к экземпляру UIWebView в Интерфейсном Разработчике. То, что вы хотите сделать, это вызвать goToPage для этого экземпляра SecondViewController из RedDragonAppDelegate. (В частности, обратите внимание, что я говорю о случаях из них - я считаю, что это основная проблема.)

В tabBarController:didSelectViewController:, когда вы делаете SecondViewController * sv = [[SecondViewController alloc] init];, вы создаете новый экземпляр SecondViewController и можете вызывать его метод goToPage, но sv - это не тот экземпляр экземпляра SecondViewController, который появляется в Интерфейсном Разработчике secondView подключен к UIWebView (то есть, когда вы создаете новый экземпляр из SecondViewController, ivar secondView сбрасывается и кажется nil, но я не знаю, что это гарантированно будет nil).

Что вы, вероятно, (*) хотите сделать, это добавить IBOutlet SecondViewController *sv; к @interface из RedDragonAppDelegate, убедитесь, что у вас есть экземпляр RedDragonAppDelegate в Interface Builder, подключите новый IBOutlet sv из RedDragonAppDelegate к экземпляру SecondViewController в Интерфейсном Разработчике и удалите строку в tabBarController:didSelectViewController:, которая определяет и инициализирует sv.

(*) Я не уверен на 100% в этом, потому что я не делаю вещи для iPhone, и я не знаю, как ваши различные виды / объекты / и т.д. расположены в файлах XIB / NIB, но если все в одном файле XIB / NIB, я почти уверен, что он будет работать.

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