单击表视图使其仅在第一次单击时附加字符串,而不是在 didSelectRowAtIndexPath 中的另一次单击时附加字符串

Posted

技术标签:

【中文标题】单击表视图使其仅在第一次单击时附加字符串,而不是在 didSelectRowAtIndexPath 中的另一次单击时附加字符串【英文标题】:On click of table view make it append string only on first click and not for another clicks in didSelectRowAtIndexPath 【发布时间】:2015-08-12 06:03:36 【问题描述】:

我正在使用表格视图来浏览 FTP 上的文件。当用户输入 url 时,我在 url 字段中附加点击行的路径。它适用于第一次点击,但当用户再次点击时,会添加双反斜杠。我想要只为第一次点击添加反斜杠。是否可以添加检查另一次点击?希望我对问题很清楚。请帮助。`

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
    NSDictionary *      listEntry;
    listEntry = [self.listEntries objectAtIndex:((NSUInteger) indexPath.row) - 1];
    NSString *dict=[listEntry objectForKey:(id) kCFFTPResourceName];
    NSLog(@"dict%@",dict);
    NSString *fvalue = [NSString stringWithFormat:@"/%@/",dict];
    NSLog(@"%@",fvalue);

    NSString  *appendURl=[NSString stringWithFormat:@"%@%@",self.urlText.text,fvalue];

    self.urlText.text=appendURl;



【问题讨论】:

self.urlText.textcellForRow 方法中最初设置的值是多少? urlpath/foldername/ 如果文件夹包含子文件夹,则为 url path/foldername//subfolder/ 对于子文件夹我不想添加反斜杠,即前缀反斜杠。 如果您想忽略每个项目的进一步点击,您需要在某处跟踪每个项目的“已点击状态”(包含所有点击项目的索引路径的列表,包含实际项目和点击状态的结构...)。如果您只想第一次单击整个表格视图,则设置一个布尔标志并选中 onclick 就足够了。由于实际问题是多个反斜杠,但是您应该确保正确存储路径而没有前导和尾随反斜杠,以便您完全控制放置斜杠的位置 如果我删除前导反斜杠,如 "NSString *fvalue = [NSString stringWithFormat:@"%@/",dict];"如果我以编程方式在 url 路径末尾手动输入“/”,则它工作正常。 【参考方案1】:

通过if else条件处理并使用hasSuffix,问题解决了`

if ([self.urlText.text hasSuffix:@"/"]) 

    appendURl=[NSString stringWithFormat:@"%@%@",self.urlText.text,fvalue];

else

    appendURl=[NSString stringWithFormat:@"%@/%@",self.urlText.text,fvalue];

【讨论】:

以上是关于单击表视图使其仅在第一次单击时附加字符串,而不是在 didSelectRowAtIndexPath 中的另一次单击时附加字符串的主要内容,如果未能解决你的问题,请参考以下文章

表视图 didSelectRowAtIndexPath,仅在选择第二次单击后才有效

仅在单击的函数内部而不是在 Type Script 代码的 UI 中更新可淘汰可观察值

d3 javascript点击函数调用

Rails html 视图,定位一个元素并使其仅对一个视图不可见。

如何仅在JavaScript中单击按钮时执行操作

为 DT 闪亮中的单列渲染下拉列表,但仅在单元格单击时加载并使用 replaceData()