允许基于url字符串选择tableview单元格

时间:2012-02-01 03:03:31

标签: objective-c ios cocoa-touch uitableview

我正在tableview应用程序中创建一个“收藏页面”菜单,用户可以在其中保存自己喜欢的网页,然后通过菜单更轻松地导航到它们。

程序会在设置应用中保存页面名称和每个收藏页面插槽的URL。默认URL为“clear”,表示还没有URL(即最喜欢的插槽未使用)。

当用户点击其所需收藏页面的tableview单元格时,该视图会切换到UIWebview并加载该URL。我这样做了,如果网址isEqualToString @"clear"UIWebView将无法加载显示,并且“无”将会发生。

但是当用户点击tableview单元格并将URL设置为“clear”时,该单元格仍以蓝色突出显示。这使得用户看起来没有清除tableview单元格。无论如何都要检查URL isEqualToString @"clear"是否在此之前停止突出显示蓝色?

感谢。

2 个答案:

答案 0 :(得分:1)

编辑:这是一种更好的方式(在willSelect中进行...在第一次点击时太晚了。)

- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
       ...
       if ( --THIS IS THE 'CLEAR' URL CASE-- ) {
            // This will prevent the **appearance** of being selected
            cell.selectionStyle = UITableViewCellSelectionStyleNone;
       } else {
            cell.selectionStyle = UITableViewCellSelectionStyleBlue;
       }
       ...
  }

在didSelectCellForIndexPath ...

 if ( -- 'CLEAR' CASE -- ) {
       // Do nothing...
 } else {
       // do whatever you do for the selected case...
 }

答案 1 :(得分:0)

您应该在tableView:willSelectRowAtIndexPath:

中执行此操作
- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    NSString *url = [self urlForIndexPath:indexPath];

    if ([url isEqualToString:@"clear"])
        return nil;

    return indexPath;
}

但如果您不想要蓝色突出显示,您还应该更改tableView:cellForRowAtIndexPath:

中单元格的selectionStyle