2013-02-24 5 views
1

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

Этот FourthViewController.h

#import <UIKit/UIKit.h> 


@interface FourthViewController : UIViewController { 

    IBOutlet UIWebView *webView; 
} 

@property(nonatomic,retain)IBOutlet UIWebView *webView; 
@end 

FourthViewController.m

#import "FourthViewController.h" 


@interface FourthViewController() 

@end 

@implementation FourthViewController 
@synthesize webView; 


- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    //self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     self.navigationItem.title = @"Instagram"; 
     self.view.backgroundColor = [UIColor colorWithWhite:0.9 alpha:1.0]; 

    } 
    return self; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    UIBarButtonItem *refreshButton = [[[UIBarButtonItem alloc] 
             initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh 
             target:self action:@selector(refreshClicked:)] init]; 
    self.navigationItem.rightBarButtonItem = refreshButton; 

    NSURL *url = [NSURL URLWithString:@"http://www.google.com"]; 
    NSURLRequest *request = [NSURLRequest requestWithURL:url]; 
    [webView loadRequest:request]; 
} 




-(IBAction)refreshClicked:(id)sender { 
    NSLog(@"Clicked"); 

} 



- (NSString *)tabImageName 
{ 
    return @"instagram"; 
} 

@end 

Но когда я бегу iPhone Simulator и получил на вкладке четвертой он не загружает веб-страницы, в чем проблема?

Заранее спасибо

ответ

0

Вероятно потому, что вы не вызываете вашего супер инициализации. Зачем вы прокомментировали эту строку:

self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 

Редактировать - также вы должны использовать «я». перед этим webView var ссылаться на него через свойство, которое вы настроили. Не ваша ошибка, просто хорошая практика.

[self.webView loadRequest:request]; 

И другой ответчик верен - если вы не подключили свой веб-просмотр IBOutlet к этому классу; то элементы webView не будут работать, поэтому обязательно проверьте это.

Редактировать 2: Если вы не используете построитель интерфейсов, вам необходимо создать свои объекты и добавить их в свой вид.

self.webview = [[UIWebView alloc] initWithFrame:self.view.bounds]; 
[self.view addSubview:self.webview] 

Ditto для любых других видов/элементов управления на этом экране. Примечание. IBOUTLET - это просто #define, который превращается в ничто. Он существует, так что разработчик интерфейса знает, какие свойства вы хотели бы использовать в качестве выходов.

+0

раскомментировать, но до сих пор не работает !! – SimpleojbC

+0

Если вы не используете IB (раскадровка или xib), тогда вы должны создать свой веб-просмотр. 'self.webview = [[UIWebView alloc] init]' перед использованием. – Dave

+0

Добавить себя в webView loadRequest, все еще не работает – SimpleojbC

0

Вы подключили IBOutlet в своем коде к своему интерфейсу .xib-документ?

Отъезд this учебник, если вы не понимаете.

+0

Я не использовал xib-файлы – SimpleojbC

+0

Ну, я рекомендую их, но если вы этого не сделали, проверьте ответ Дейва – DGund

+0

Если вы не используете xib; вы используете раскадровку? Если нет, то почему IBOutlet? – Dave

1

Если вы не используете xib, вам необходимо назначить-init и добавить его в иерархию представления.

Таким образом, в методе viewDidLoad, например:

UIWebView *webView = [[UIWebView alloc] initWithFrame:self.view.bounds]; 
[webView loadRequest:request]; 
[self.view addSubview:webView]; 
[webView release]; // if you don't use ARC 

Тогда, если вы не используете XIB, вам не нужно использовать IBOutlet. Это только местозаполнитель, который позволяет работать с Interface Builder (т. Е. Подключать розетки).

Редактировать

Вы должны изменить код, который я при условии, как следующее (например). Мой был просто примером. Это предупреждение просто указывает, что локальная переменная скрывает объявление переменной, созданной в .h.

UIWebView *web = [[UIWebView alloc] initWithFrame:self.view.bounds]; 
self.webView = web; 
[self.webView loadRequest:request]; 
[self.view addSubview:self.webView]; 
[web release]; // if you don't use ARC 
+0

Wow !, он работает как волшебство, но есть что-то для меня ». Локальная декларация« webView »скрывает переменную экземпляра« так? – SimpleojbC

+0

Я решил это, я удаляю UIWebView из файла заголовка Спасибо, много парней – SimpleojbC

+0

@ user2104662 Добавлено редактирование для вас. Надеюсь, поможет. –

1
NSURL *url = [NSURL URLWithString:@"http://www.google.com"]; 
NSURLRequest *request = [NSURLRequest requestWithURL:url]; 
self.webView = [[UIWebView alloc] initWithFrame:self.view.bounds]; 
[self.webView loadRequest:request]; 
[self.webView addSubview:self.webview]; 

Для обновления в панели кнопок целевого метода refreshClicked:

- (IBAction)refreshClicked:(id)sender { 
    [self.webView loadRequest:request];  
} 
Смежные вопросы