从UITableViewCell打开邮件和Safari

Jua*_*lez 3 url uitableview ios5

我有一个带有两个UITableViewCell的表(每个都有一个标签).

我们的想法是实现经典的关于页面,其中包含指向应用程序Web的链接以及指向支持电子邮件的链接.

这是它的样子:

图片来自:http://dl.dropbox.com/u/3930527/Xcode002.jpg

在来这里之前我一直在环顾四周寻求帮助,但是,像往常一样,如此多的奇怪而复杂的解决方案来实现我的胆量告诉我必须更容易的事情.

我不确定要走的路是让标签可以链接.由于我在单元格上启用了用户交互,因此我认为使用该事件来触发第一行的[b] Safari [/ b]和第二行的[b]邮件[/ b]是很自然的.

我对么?有推荐的方法吗?

the*_*RON 6

要在safari中打开URL,您可以使用UIApplication#openURL方法.您也可以使用相同的方法使用mailto:链接打开邮件.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
  if(indexPath.row == 0){
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://myawesomeapp.com/support"];
  } else if(indexPath.row == 1){
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"support@myawesomeapp.com"];
  }
}
Run Code Online (Sandbox Code Playgroud)

可以说,对您的支持电子邮件问题更好的解决方案是在您的应用程序中以模态方式显示"撰写新电子邮件"屏幕,这很容易做到.

首先,您需要将MessageUI框架添加到您的应用程序,并使您的表视图控制器响应MFMailComposeViewControllerDelegate.

然后,不是上面调用UIApplication,而是沿着这些方向做一些事情:

if ([MFMailComposeViewController canSendMail]) {
  MFMailComposeViewController *mailViewController = [[MFMailComposeViewController alloc] init];
  mailViewController.mailComposeDelegate = self;
  [mailViewController setSubject:@"[My Awesome App] Support request"];
  [mailViewController setToRecipients:[NSArray arrayWithObject:@"support@myawesomeapp.com]];
  [self presentModalViewController:mailViewController animated:YES];
}
Run Code Online (Sandbox Code Playgroud)

这将显示"撰写新电子邮件"模式,并将用户保留在您的应用内,而不是切换到Mail本身.您还需要处理以下委托方法,以便在用户完成后隐藏模态:

- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error{
  [self dismissModalViewControllerAnimated:YES];
}
Run Code Online (Sandbox Code Playgroud)