Несколько вкладок, управляющих одним UIWebview - PullRequest
0 голосов
/ 17 ноября 2009

как использовать несколько вкладок UITabBar для управления одним UIWebView?

Пример:

Pressing tab1: UIWebView loads index.html
Pressing tab2: the same UIWebView loads customers.html
Pressing tab3: the same UIWebView loads tos.html

Мой подход состоял в том, чтобы поместить UIWebView в AppDelegate и установить self.webview каждого ViewController в этот единственный UIWebView. Тем не менее, WebView отображается, но белый и ничего не загружается.

Есть подсказки?

Ответы [ 3 ]

1 голос
/ 17 ноября 2009

Вам нужно -removeFromSuperview, а затем -addSubview для перемещения веб-просмотра; просто переназначение переменной экземпляра не поможет.

1 голос
/ 17 ноября 2009

Панель вкладок - действительно неправильная модель для того, что вы пытаетесь сделать. Если вы хотите переключать контент, то на самом деле вам нужна панель инструментов, потому что она предназначена для изменения представления места различными способами - TabBar предназначен для переключения между несколькими несвязанными представлениями, и поэтому вы боретесь с ним, когда пытаетесь использовать один и тот же вид на нескольких вкладках.

Теперь, если у вас действительно совершенно не связанный контент, почему бы не рассмотреть возможность использования разных UIWebView, по одному на вкладку. Они не настолько тяжелы, что загрузка с несколькими экземплярами действительно повредит чему-либо, и вкладки не загружают контент до нажатия, поэтому они не будут загружаться сразу. Для сохранения памяти вы можете даже выбросить контроллеры вида при переключении вкладок. Но иметь каждый вид для управления своим собственным веб-представлением имеет больше смысла, и это означает, что вы можете намного легче сохранить содержимое в кэше.

1 голос
/ 17 ноября 2009

WebViews стоят дорого, поэтому ваш подход, вероятно, правильный, но вы можете начать с создания отдельного webview в каждом контроллере представления вкладок и посмотреть, все ли работает так, как вы ожидаете. Перегрузка может привести к тому, что ваше приложение начнет получать предупреждения о памяти, но это по крайней мере позволит вам увидеть, будут ли ваши страницы по крайней мере корректно загружаться в этом контексте.

Кроме того, вы можете опубликовать некоторый код, который показывает, как вы добавляете свое веб-представление к каждому контроллеру представления? Если вы не устанавливаете фрейм своего веб-просмотра с помощью -setFrame, после добавления веб-просмотра в качестве подпредставления представления вашего контроллера представления он не будет отображаться правильно.

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