スタンフォード大の iPhone Application Programming Lecture 16 で紹介されていた、テーブルのセル内に URL のリンクを入れて、リンクをタップした時に UIWebView に表示する方法です。

セルに UIWebView を入れてその view に HTML でリンクを表示、UIWebView のデリゲートを設定しておき、リンククリック時には Web を表示するコントローラ(ここでは WebViewController )に URL を設定します。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
  static NSString *CellIdentifier = @"Cell";
  UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
  if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
  }

  // Set up the cell...
  NSString	*string = @"Go to CS193p website";

  CGRect frame = cell.contentView.bounds;
  frame = CGRectInset(frame, 10, 1);
  UIWebView *webView = [[UIWebView alloc] initWithFrame:frame];
  [webView loadHTMLString:string baseURL:nil];
  webView.delegate = self;
  [cell.contentView addSubview:webView];	

  return cell;
}

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
  if (navigationType == UIWebViewNavigationTypeLinkClicked)
  {
      WebViewController *webController = [[WebViewController alloc] init];
      webController.url = request.URL;
      [self.navigationController pushViewController:webController animated:YES];
      [webController release];

    return NO;
  }
  return YES;
}

関連する投稿