我是iOS及其开发人员的新手。我正在开发iPhone应用程序。我有UITableView
和UIWebView
。当我按下UITableview
的单元格时,根据点击那里我想在我的UIWebView
中加载各种网页。我该怎么做。请帮助我
示例
cell-one of tableview --> web page 1 in UIWebView
cell-two of tableview --> web page 2 in UIWebView
但在我的应用程序中,所有单元格都重定向到一个网页。请在我使用的代码下面找到。
tabelViewcontroller.m
![@interface Essentialinfocontroller ()
{
NSMutableArray * titlearray;
NSMutableArray * subtitilearray;
}
@end
@implementation Essentialinfocontroller
@synthesize info;
- (void)viewDidLoad
{
\[super viewDidLoad\];
self.info.delegate=self;
self.info.dataSource=self;
titlearray =\[\[NSMutableArray alloc\]initWithObjects:@"Custom",@"Department Of Immigration",@"Foriegn Currency Regulations",@"Sri Lankan Embassies" ,@"Sri Lankan Visa",@"When You Are There..", nil\];
}
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return \[titlearray count\];
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString * cellidentifier=@"cell";
UITableViewCell * cell=
\[info dequeueReusableCellWithIdentifier:cellidentifier forIndexPath:indexPath\];
cell.textLabel.text =\[titlearray objectAtIndex:indexPath.row\];
return cell;
}
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if(\[segue.identifier isEqualToString:@"custom"\])
{
}
}
@end][1]
detailviewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
NSURL *url= [NSURL URLWithString:@"http://google.lk"];
NSURLRequest * requestURL= [NSURLRequest requestWithURL:url];
[webView loadRequest:requestURL];
}
答案 0 :(得分:1)
这是你可以做的,首先在tableViewController.m中实现以下方法
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[self performSegueWithIdentifier:[titlearray objectAtIndex:indexPath.row] sender:self];
}
然后是你的prepareForSegue方法
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
DetailViewController *detailViewController = segue.destinationViewController;
if([segue.identifier isEqualToString:@"custom"]) {
detailViewController.urlString = @"Your Custom Url";
} else if([segue.identifier isEqualToString:@"Department Of Immigration"]){
detailViewController.urlString = @"Your Department Of Immigration Url";
}
}
然后在DetailViewController.h中 添加以下属性
@property (nonatomic,strong) NSString *urlString;
并在DetailViewController.m
中- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
NSURL *url= [NSURL URLWithString:self.urlString];
NSURLRequest * requestURL= [NSURLRequest requestWithURL:url];
[webView loadRequest:requestURL];
}
答案 1 :(得分:0)
从上面显示的代码看起来您没有实现UITableViewDelegate
方法。特别是tableView:didSelectRowAtIndexPath:
将通知您单击的特定行。基于此,您可以在DetailViewController
中设置网址,并为每个单元格点击加载不同的网址。
创建一个数组myURLList
,它将首先包含与表格单元格对应的所有URL。
将ViewController设置为UITableView
委托,并实现以下方法:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
self.webURL = [myURLList objectAtIndex:indexPath.row]; // Create a Property Web URL in View Controller and update based on Cell Selection.
}
准备segue :(假设您的视图嵌入在导航控制器中)
UINavigationController *navController = (UINavigationController *)segue.destinationViewController;
DetailViewController *controller = (DetailViewController *)navController.topViewController;
controller.selectedURL = self.webURL; // In DetailViewController, create a Property as `selectedURL`
在DetailViewContrlloler中修改viewDidLoad以从属性selectedURl
答案 2 :(得分:0)
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
标识点击了哪一行。在此委托方法中,indexPath.row
将为您提供被调用行的索引。-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
函数中发送所需网址。答案 3 :(得分:0)
在这种情况下,您必须从源控制器本身发送相应的URL。你可以这样试试:
NSString
属性(例如goToURL
)。现在,在didSelectRowAtIndexPath
方法中,根据点击的行jus,您可以将URL值提供给我们声明的属性。现在在DestinationViewController中,获取一个属性变量,在prepareForSegue方法中,将该变量的值设置为我们分配给上一个变量的值。像这样:
DetailViewController * destController = [segue destinationViewController];
destController.URLvar= _goToURL;
现在,当您的DetailViewController显示时,您将在URLvar
变量中包含一个URL值,然后您可以使用该值来加载您的Web视图。