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