Различные URI для каждого экземпляра UIViewController

У меня есть UITabController с пятью вкладками. Каждая вкладка просто содержит экземпляр пользовательского UIViewController, и каждый экземпляр содержит UIWebView.

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

Я могу заставить его работать, если я [self.webView loadRequest:] in -(void)viewDidLoad но кажется смешным создавать пять разных классов с пятью различными версиями viewDidLoad, когда все, что я действительно хочу изменить, это URI.

Вот что я пробовал:

appDelegate.h

 #import <UIKit/UIKit.h> @interface elfAppDelegate : UIResponder <UIApplicationDelegate, UITabBarControllerDelegate> @property (strong, nonatomic) UIWindow *window; @property (strong, nonatomic) UITabBarController *tabBarController; @end 

appDelegate.m

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; customVC *start = [[customVC alloc] init]; customVC *eshop = [[customVC alloc] init]; customVC *table = [[customVC alloc] init]; customVC *video = [[customVC alloc] init]; customVC *other = [[customVC alloc] init]; // Doesn't do anything... I wish it would! [start.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://google.com"]]]; self.tabBarController = [[UITabBarController alloc] init]; self.tabBarController.viewControllers = @[start, eshop, table, video, other]; self.window.rootViewController = self.tabBarController; [self.window makeKeyAndVisible]; return YES; } 

customVC.h

 #import <UIKit/UIKit.h> @interface customVC : UIViewController <UIWebViewDelegate> { UIWebView* mWebView; } @property (nonatomic, retain) UIWebView* webView; - (void)updateAddress:(NSURLRequest*)request; - (void)loadAddress:(id)sender event:(UIEvent*)event; @end 

customVC.m

 @interface elfVC () @end @implementation elfVC @synthesize webView = mWebView; - (void)viewDidLoad { [super viewDidLoad]; self.webView = [[UIWebView alloc] init]; [self.webView setFrame:CGRectMake(0, 0, 320, 480)]; self.webView.delegate = self; self.webView.scalesPageToFit = YES; [self.view addSubview:self.webView]; } 

Создайте свойство типа NSURL* в вашем customVC.

Измените свой метод initVC -(id)init на -(id)initWithURL:(NSURL*)url следующим образом:

 -(id)initWithURL:(NSURL*)url{ self = [super init]; if(self){ self.<URLPropertyName> = url; } return self; } 

Затем позвоните

 [start.webView loadRequest:[NSURLRequest requestWithURL:self.<URLPropertyName>]]; 

in viewDidLoad

Затем, когда вы инициализируете свои разные экземпляры customVC, просто используйте

 customVC *vc = [customVC alloc]initWithURL:[NSURL URLWithString:@"http://..."]]; 

Я подозреваю, что вы инициализируете свой веб-просмотр после вызова метода loadRequest: Чтобы избежать этого, лучше начать инициализацию неатомических свойств, переопределив их сеттеры:

 - (UIWebView*)webview { if (mWebView == nil) { // do the initialization here } return mWebView; } 

Таким образом, ваш веб-просмотр будет инициализирован при первом доступе к нему (при вызове loadRequest: а не после него, в методе viewDidLoad пользовательского вида viewDidLoad .

Interesting Posts

Как установить метку доступности предупреждающего сообщения в iOS?

Метод вызова с анимацией из функции обновления в наборе спрайтов

Изменение типа ключа возврата uitextfield при редактировании

iOS камера UIView накладывает полный экран на iPad?

Ошибка SSL IOS9 с NSURLSession

Единичные тесты с NSURLSession

Сжатие UIImage в данные изображения JPEG несколько раз

Требовать тип и протокол для параметра метода

Как выглядит получение IAP Apple для автоматического обновления подписки с различной продолжительностью в семействе подписчиков?

Как создать пользовательские повторно используемые UIControls в XCode 4.1

Текстовые поля конфигурации Xcode теряют фокус

Установка рамки UITableView не работает правильно

iOS – как вы контролируете размер модального контроллера?

Можно использовать звуки системы Apple в моем приложении iOS?

Задержка с помощью IMobileServiceClient.PullAsync при попытке синхронизации с Azure Mobile Services

Давайте будем гением компьютера.