didSelectRowAtIndexPath:将文本值转移到另一个方法

Posted

技术标签:

【中文标题】didSelectRowAtIndexPath:将文本值转移到另一个方法【英文标题】:didSelectRowAtIndexPath: transferring the text value to another method 【发布时间】:2014-06-16 11:59:50 【问题描述】:

我正在制作我的第一个应用程序。基本上我在tableView 中有一个菜单。

当用户单击一个单元格时,它应该将他们带到另一个显示本地 html 内容的视图。它工作正常。

但是我想保存所选行的文本值并将其传递给另一个方法(来自didSelectRowAtIndexPath: to the prepareForSegue: method)。

我已经尝试了很多东西,但似乎 text 变量在某种程度上是 didSelectRowAtIndexPath: 方法的本地变量,即使我在标题中声明了它。

那么有人知道我做错了什么吗?

下面是一些代码片段。


头文件:

#import <UIKit/UIKit.h>

@interface SidebarViewController : UITableViewController 

NSString *rowText;



@end

实施:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath   *)indexPath 

    UILabel *mySubNameLabel = (UILabel *)[cell viewWithTag:201];
    NSString *rowText = mySubNameLabel.text;


    if ([mySubNameLabel.text isEqualToString: @"What is a dataset"]) 
        [self performSegueWithIdentifier:@"showLab" sender:cell];
    

    return;



- (void) prepareForSegue: (UIStoryboardSegue *) segue sender: (id) sender

if ([segue.identifier isEqualToString:@"showWeb"]) 

   NSString *myLabel = rowText ;
   ViewController *detailsTVC = [segue destinationViewController];
   detailsTVC.label = myLabel; //rowText;
   



@end
作为最后一点,应该提到的是:*rowText 在第一种方法中返回正确的文本字符串。 但是在第二种方法NSString *myLabel = rowText ; 中,它返回值nil

【问题讨论】:

在 didSelectRowAtIndexPath 中,您正在创建一个新变量 rowText,而不是填充您的实例变量 (_rowText = mySubNameLabel.text)。 哇,这很容易。谢谢。 【参考方案1】:

尝试改变

  NSString *rowText = mySubNameLabel.text;

到:

  _rowText = mySubNameLabel.text;

【讨论】:

【参考方案2】:

您不能将NSString 指定为UILabel。你需要像UILabel.text一样通过。

NSString *myLabel = rowText ; 这里的 myLabel 是你的字符串。 detailsTVC.label = myLabel; 这里你需要将值传递给标签..

试试这个代码:

if ([segue.identifier isEqualToString:@"showWeb"]) 

   ViewController *detailsTVC = [segue destinationViewController];
   detailsTVC.label.text = rowText; // rowText must be string

【讨论】:

我包含该行的唯一原因: NSString *myLabel = rowText ;是包括一个断线并调查 rowText 是否具有正确的值。我现在也实施了您的更新。感谢您的评论。

以上是关于didSelectRowAtIndexPath:将文本值转移到另一个方法的主要内容,如果未能解决你的问题,请参考以下文章

将 accessoryButtonTappedForRowWithIndexPath 转换为 didSelectRowAtIndexPath

didSelectRowAtIndexPath:将文本值转移到另一个方法

通过 didSelectRowAtIndexPath 将 NSManagedObject 添加到 NSMutableArray

将 uitableview 添加到 uiview 后 didselectrowatindexpath 未调用 ios

将核心数据对象传递给 didSelectRowAtIndexPath 上的子视图

目标 C:如果将标签添加到单元格,则 UITable 方法“didSelectRowAtIndexPath”不起作用