-
我正在制作我的第一个应用程序。基本上,我在
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
尝试更改
NSString *rowText = mySubNameLabel.text;
至:
_rowText = mySubNameLabel.text;
不能将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
}