我正在制作我的第一款应用。基本上我在tableView
中有一种菜单。
当用户点击一个单元格时,它应该将它们带到显示本地HTML内容的另一个视图。它工作正常。
但是我想保存所选行的文本值并将其传递给另一个方法(来自didSelectRowAtIndexPath: to the prepareForSegue: method
)。
我已经尝试了很多东西,但似乎文本变量在某种程度上是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
。答案 0 :(得分:0)
尝试更改
NSString *rowText = mySubNameLabel.text;
到:
_rowText = mySubNameLabel.text;
答案 1 :(得分:0)
您无法将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
}