单击表视图使其仅在第一次单击时附加字符串,而不是在 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.text
在cellForRow
方法中最初设置的值是多少?
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 中更新可淘汰可观察值