Я использую UITableView, который указывает на UITabBarController для отображения серии UIWebView на этих вкладках.
Я хотел бы определить строку, которая будет использоваться для создания URL-адреса для каждой вкладки на основе выбранного элемента. Проблема, с которой я сталкиваюсь, заключается в том, как передать URL-адрес контроллеру StateTrendViewController.
StateTableViewController.h
#import <UIKit/UIKit.h>
@interface StateTableViewController : UITableViewController
{
NSArray *StateList;
}
@property (nonatomic, retain) NSArray *StateList;
- (void) buildStateList;
@end
StateTableViewController.m
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return [StateList count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
NSInteger rowNumber = indexPath.row;
NSString *stateName = [StateList objectAtIndex:rowNumber];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
cell.textLabel.text = stateName.capitalizedString;
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView deselectRowAtIndexPath:indexPath animated:YES];
NSInteger rowNumber = indexPath.row;
NSString *stateName = [StateList objectAtIndex:rowNumber];
[[self.navigationController.viewControllers objectAtIndex:2] setTitle:stateName.capitalizedString];
}
StateTrendViewController.h
#import <UIKit/UIKit.h>
@interface StateTrendViewController : UIViewController
{
IBOutlet UIWebView *StateTrendView;
IBOutlet NSString *ViewURL;
}
@property (nonatomic, retain) UIWebView *StateTrendView;
@property (nonatomic, retain) NSString *ViewURL;
@end
StateTrendViewController.m
#import "StateTrendViewController.h"
@implementation StateTrendViewController
@synthesize StateTrendView;
@synthesize ViewURL;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void) viewWillAppear:(BOOL)animated
{
NSString *baseURL = @"https://www.google.com/search?q=";
NSString *state = @"test";
NSString *fullURL = [baseURL stringByAppendingString:state];
NSURL *url = [NSURL URLWithString:fullURL];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url]; [StateTrendView loadRequest:requestObj];
}
Мне нужно заменить статическую настройку на строку, переданную контроллеру, используя свойство ViewURL, которое я настроил: NSString *state = @"test";
Я использую раскадровку в своем проекте в Xcode 4.2.1. Как мне передать это строковое значение моему контроллеру?