2014-12-23 14 views
6

voglio usare WKWebView per iOS 8, ma anche bisogno di compatibilità per iOS7, ho visto i messaggi si riferiscono a utilizzando questo codice:UIWebView e WKWebView

if ([WKWebView class]) { 
// do new webview stuff 
} 
else { 
// do old webview stuff 
} 

Ma non è sicuro che cosa sto facendo male come il codice qui sotto mi dà un errore di linker:

Undefined symbols for architecture i386: 
"_OBJC_CLASS_$_WKWebView", referenced from: 
    objc-class-ref in ViewController.o 
ld: symbol(s) not found for architecture i386 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

Qualsiasi aiuto molto apprezzato, qui è il mio codice:

.h di file:

#import "WebKit/WebKit.h" 
#import <UIKit/UIKit.h> 
@interface ViewController : UIViewController 

@property (weak, nonatomic) IBOutlet UIWebView *contentWebView; 
@property (weak, nonatomic) IBOutlet WKWebView *contentWKWebView; 

@end 

di file .m:

#import "ViewController.h" 

@interface ViewController() 
@end 

@implementation ViewController 
@synthesize contentWebView; 
@synthesize contentWKWebView; 

- (void)viewDidLoad { 
[super viewDidLoad]; 

NSString *filePath = [[NSBundle mainBundle]pathForResource:@"LockBackground" ofType:@"html"]; 
NSURL * fileURL = [NSURL fileURLWithPath:filePath isDirectory:NO]; 
NSURLRequest * myNSURLRequest = [[NSURLRequest alloc]initWithURL:fileURL]; 
if ([WKWebView class]) { 
    [contentWKWebView loadRequest:myNSURLRequest]; 
} else { 
    [contentWebView loadRequest:myNSURLRequest]; 
} 
} 

-(UIStatusBarStyle)preferredStatusBarStyle { 
return UIStatusBarStyleLightContent; 
} 

- (void)didReceiveMemoryWarning { 
[super didReceiveMemoryWarning]; 
// Dispose of any resources that can be recreated. 
} 

@end 
+0

Immagino che non si possa usare IBOutlet in questo caso. Se aggiungi WKWebView al tuo xib o storyboard, lo xib o lo storyboard non possono essere caricati sotto iOS 8. – Ryan

+0

Come si può aggirare questo per favore? – Nicoll

+0

Cosa ne pensi di allocare uno di webView tramite codice. Non con xib o storyboard. – Ryan

risposta

43

Vai al tuo Project, clicca su General, scorrere verso il basso per Linked Frameworks and Libraries, e aggiungere WebKit.framework come opzionale. Vedi qui: Xcode 6 + iOS 8 SDK but deploy on iOS 7 (UIWebKit & WKWebKit)

+1

Questa è una risposta fantastica :) – Dilip

+1

Questo dovrebbe essere considerato come la risposta giusta per questo - Ho avuto questo problema da solo e risolto rapidamente a causa di questa risposta. :) –

+1

Grazie mille amico. Mi hai salvato le mie ore. :) –