Я работаю над Универсальным приложением iOS для Xcode 4 .Я впервые пытаюсь создать приложение для iPhone / iPad.Я использую шаблон приложения Master-Detail .Это приложение является примерно RSS Feed Reader.Я следовал этому руководству, чтобы понять основную идею: http://cocoadevblog.com/iphone-tutorial-creating-a-rss-feed-reader
Мне удалось заставить работать часть iPhone, но у меня проблема с UIWebView в части iPad.
Воткод, который может быть неправильным.
Из MasterViewController ...:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
if (!self.detailViewController) {
NSDictionary *theItem = [items objectAtIndex:indexPath.row];
DetailViewController *nextController = [[DetailViewController alloc] initWithNibName:@"DetailViewController_iPhone" bundle:nil];
[nextController setDetailItem:theItem];
[self.navigationController pushViewController:nextController animated:YES];
}
}
else {
if (!self.detailViewController){
NSDictionary *theItem = [items objectAtIndex:indexPath.row];
DetailViewController *nextController = [[DetailViewController alloc] initWithNibName:@"DetailViewController_iPad" bundle:nil];
[nextController setDetailItem:theItem];
self.detailViewController = nextController;
}
else {
[self.detailViewController setDetailItem:[self.items objectAtIndex:indexPath.row]];
}
}
}
... в DetailViewController, здесь есть реализация setDetailItem: и configureView:
- (void)setDetailItem:(id)newDetailItem
{
if (_detailItem != newDetailItem) {
_detailItem = newDetailItem;
// Update the view.
[self configureView];
}
if (self.masterPopoverController != nil) {
[self.masterPopoverController dismissPopoverAnimated:YES];
}
}
- (void)configureView
{
// Update the user interface for the detail item.
if (_detailItem) {
NSLog(@"webpage creation");
NSString *html = [_detailItem objectForKey:@"title"];
[...html stuff added to html string...]
webView = nil;
webView.delegate=self;
//[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com"]]];
[self.webView loadHTMLString:html baseURL:nil];
NSLog(@"webView loaded");
}
}
Я получил пустой экран на панели detailView, когда я выбираю строку в MasterView (MasterView / detailView -> в случае универсального приложения, приложение iPad представляет собой приложение в стиле splitview).
Я связал webView в InterfaceBuilder (для обоих файлов iPhone / iPad .xib), я получил каждый NSLog, но я не могу заставить UIWebViewDelegate отвечать мне, даже если я его реализовал.Конечно, комментарий с загрузкой главной страницы Google тоже не работает.
ОБНОВЛЕНИЕ 25/10/11:
Я создал новое универсальное приложение, простое, где я добавил UIWebView, и я пытаюсь загрузить веб-страницу Google.Я могу загрузить страницу из viewDidLoad / viewDidAppear (detailViewController), но не из configureView (detailViewController), который вызывается, когда я выбираю строку (запускаем setDetailItem в detailViewController).Как будто я не могу изменить его после загрузки панели.Есть кое-что, чего я не понимаю.(Код, который я использую для запуска веб-страницы, имеет ту же строку кода, что и комментарий выше в configureView)
ОБНОВЛЕНИЕ 26/10/11
Веб-просмотр не имеет значения(null) в configureView (когда я пытаюсь отобразить его для выбранной строки).Я попробовал это, но это не работает, но я (очевидно / по крайней мере) получаю значение для webView в этом случае:
- (void)configureView{
if (_detailItem) {
UIWebView *tempWebView = [[UIWebView alloc] init];
self.webView = tempWebView;
NSLog(@"webpage creation");
NSString *html = [_detailItem objectForKey:@"title"];
[...html stuff added to html string...]
//[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com"]]];
[self.webView loadHTMLString:html baseURL:nil];
self.webView.delegate=self;//better to add "self" to get it working
NSLog(@"webView loaded");
NSLog(@"%@",self.webView); //i got this : <UIWebView: 0x6a5a550; frame = (0 0; 0 0); layer = <CALayer: 0x6a59750>>
}}
Путем записи "self.webView.delegate = self;"мне ответили делегаты.Однако этот ответ дает два ответа (??), как если бы были запущены два webView?:
2011-10-26 10: 49: 57.089 APPName [18334: f803] didStart Загрузка веб-страницы
2011-10-26 10: 49: 59.416 APPName [18334: f803] didStart Загрузка веб-страницы
2011-10-26 10: 49: 59.523 APPName [18334: f803] закончила загрузку веб-страницы
2011-10-26 10: 49: 59.806 APPName [18334: f803] завершена загрузка веб-страницы