2009-08-30 5 views
0

Я новичок в разработке iPhone и задаюсь вопросом, который может помочь понять эту концепцию в целом.UIViewControllers и UIWebView

В принципе, у меня есть UIViewController, который загружает представление с кучей вещей. Теперь я хочу, когда пользователь нажимает кнопку, чтобы загрузить другое представление, которое, как представляется, является webView. Теперь я хочу, чтобы weview загружал другой URL-адрес, в зависимости от того, какая кнопка была нажата в исходном представлении.

как я могу это сделать? В основном в моей голове, я думал, что я мог бы загрузить и поменять точку при нажатии кнопки, например, так:

В

- (void)tableView:(UITableView *)tableView 
didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

    NSString *selectedLink = [valuesForSection objectAtIndex:row]; 

    NSString *urlAddress = @"http://www.google.com"; 

    //Create a URL object. 
    NSURL *url = [NSURL URLWithString:urlAddress]; 

    //URL Requst Object 
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url]; 

    //Load the request in the UIWebView. 
    [webView loadRequest:requestObj]; 

    [self.view removeFromSuperview]; 
    [self.view insertSubview:webView atIndex:0]; 
}

Является ли это правильный способ сделать это? Или как я могу это сделать?

ответ

1

Это было бы так, как я бы это сделал, да. Создайте единый интерфейс UIWebView и, в зависимости от выбранной ячейки, загрузите NSURLRequest в представление с помощью loadRequest:. Он имеет преимущества не требовать от вас создания отдельных веб-представлений для каждой ячейки и асинхронности.

Однако я не обязательно удалял self.view из своего супервизора всякий раз, когда нажимается клетка; скорее, я бы вывел либо модальный контроллер вида (presentModalViewController:animated:) с видом на веб-страницу в качестве своего вида, либо я бы нажал новый контроллер на стек навигационного контроллера (pushViewController:animated:). Это более плавный переход и будет выглядеть лучше для пользователя.

Редактировать (в ответ на комментарий): Да, лучше иметь другой контроллер, чем просто менять виды. Выполнение removeFromSuperview и addSubview: поддерживает оба представления в одном контроллере, но в результате ваш код будет более сложным для управления (один контроллер будет иметь дело с двумя видами) и будет иметь худший пользовательский интерфейс (переход отсутствует, например, встроен с толчок навигационного контроллера).

Для того, чтобы сделать толчок правильно, вы должны:

  • Постройте навигационный контроллер для существующего контроллера
  • вида Если вам необходимо создать новый экземпляр UIViewController с его вид установлен на UIWebView создать и загрузить с HTML
  • Вставьте новый контроллер представления на стек навигации контроллера с вашего старого контроллера представления по телефону:
[self.navigationController pushViewController:newViewController animated:YES];
+0

Не могли бы вы рассказать мне, как бы вы реализовали pushviewcontroller? Но, сказав, что вы говорите, что было бы лучше иметь другой контроллер, а не просто взгляд внутри? – Doz