根据不同的UITableViewCell点击 - iOS加载不同的URL

时间:2014-07-01 10:40:12

标签: ios iphone objective-c uitableview uiwebview

我是iOS及其开发人员的新手。我正在开发iPhone应用程序。我有UITableViewUIWebView。当我按下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];


}

4 个答案:

答案 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

中选取URL

答案 2 :(得分:0)

  1. 创建一个包含所有网址的数组。
  2. 使用- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath标识点击了哪一行。在此委托方法中,indexPath.row将为您提供被调用行的索引。
  3. 然后在您的-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender函数中发送所需网址。

答案 3 :(得分:0)

在这种情况下,您必须从源控制器本身发送相应的URL。你可以这样试试:

  1. 在TableViewController的.h文件中获取NSString属性(例如goToURL)。现在,在didSelectRowAtIndexPath方法中,根据点击的行jus,您可以将URL值提供给我们声明的属性。
  2. 现在在DestinationViewController中,获取一个属性变量,在prepareForSegue方法中,将该变量的值设置为我们分配给上一个变量的值。像这样:

    DetailViewController * destController = [segue destinationViewController];

    destController.URLvar= _goToURL; 
    
  3. 现在,当您的DetailViewController显示时,您将在URLvar变量中包含一个URL值,然后您可以使用该值来加载您的Web视图。