如何将 [didSelectRowAtIndexPath] 选中的单元格变成字符串供以后使用

Posted

技术标签:

【中文标题】如何将 [didSelectRowAtIndexPath] 选中的单元格变成字符串供以后使用【英文标题】:How to turn [didSelectRowAtIndexPath] selected cell into a string for later use 【发布时间】:2014-05-20 01:16:57 【问题描述】:

我正在寻找一种方法来添加通过didDismissWithButtonIndex: 方法在表格中选择的didSelectRowAtIndexPath:“单元格名称”:

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex 
if (buttonIndex == 1) 


Database *currentStore = [DBList objectAtIndex:indexPath.row];

NSString *requestStr = @"http://";
requestStr = [requestStr stringByAppendingString:hostTextField.text];
requestStr = [requestStr stringByAppendingString:@":8080/compfile2.php?password="];
requestStr = [requestStr stringByAppendingString:passwordTextField.text];
requestStr = [requestStr stringByAppendingString:@"&db=latinbites"];
requestStr = [requestStr stringByAppendingString:currentStore];



显然,

Database *currentStore = [DBList objectAtIndex:indexPath.row];

不正确。有没有办法在选定的单元格行上放置一个字符串?

【问题讨论】:

我不确定您如何将 UIAlertViewDelegate didDismissWithButtonIndex 与表视图的 didSelectRowAtIndexPath 相关联。您想模拟用户在表格视图上触摸以选择与按钮索引对应的单元格吗? indexPath.row 来自哪里? 是的,你最后说的。 我表中的单元格是来自查询的单个对象(数据库):[SHOW DATABASES] 【参考方案1】:

我相信我了解您想要实现的目标。尝试以下代码:-

没有。 1 - 用 NSString 声明一个属性

@interface TableViewController ()<UITableViewDataSource,UITableViewDelegate>
@property (nonatomic,strong) NSString * selectedCellName;
@end

没有。 2 - 在 didSelectRowAtIndexPath

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
UITableViewCell* cell = [tableView cellForRowAtIndexPath:indexPath];
self.selectedCellName = cell.textLabel.text;

没有。 3 - 在 didDismissWithButtonIndex 中,附加单元格名称。

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex 
if (buttonIndex == 1) 

NSString *requestStr = @"http://";
requestStr = [requestStr stringByAppendingString:hostTextField.text];
requestStr = [requestStr stringByAppendingString:@":8080/compfile2.php?password="];
requestStr = [requestStr stringByAppendingString:passwordTextField.text];
requestStr = [requestStr stringByAppendingString:@"&db=latinbites"];
requestStr = [requestStr stringByAppendingString:self.selectedCellName];


【讨论】:

为我工作!谢谢! 没问题。也感谢您接受作为答案。我很高兴能够帮助您。 ;)【参考方案2】:

尽管您想做的事情令人困惑(为什么不让他们点击桌子,而不是警报视图?),但可以做到。

首先,请参阅 How to programmatically “tap” a UITableView cell? - 之后您需要创建一个 NSIndexPath 对象以发送到该方法。

NSIndexPath *cellToTap = [NSIndexPath indexPathForRow:buttonIndex inSection:theSection];

theSection 应该是什么取决于您。如果您的表格视图中只有一个部分,则为 0。

【讨论】:

在我的应用程序中,点击单元格会显示警报视图和两个选项。 (取消,添加)。添加按钮将一堆信息添加到 SQLite 数据库中。 很公平。好吧,只需调用 didSelectRowAtIndexPath 就可以了。在调用此方法之前 tableView 所做的事情是装饰性的,任何模型更改都由您决定 - 因此您获得的效果与您实际上用手指敲击该单元格一样。【参考方案3】:

我认为您正在寻找名为 indexPathForSelectedRow 的 UITableView 方法。只要还有选择,这将回答您需要的索引路径。

如果选择可能会丢失(在用户选择之后并且在解除警报之前),那么更安全的选择是在触发 didSelect 方法时将选择记录在属性中。

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex 
    if (buttonIndex == 1) 
        NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
        Database *currentStore = DBList[indexPath.row];
        // ...

【讨论】:

以上是关于如何将 [didSelectRowAtIndexPath] 选中的单元格变成字符串供以后使用的主要内容,如果未能解决你的问题,请参考以下文章

具有多个视图控制器的 UITableView

Swift - Alamofire Post,如果为真则更改图像

如何将thinkcmf导入eclipse

如何将CString转换成wstring

如何将Ios文件上传到

Qt如何将文字变成图片?