didSelectRowAtIndexPath:将文本值传输到另一个方法

时间:2014-06-16 11:59:51

标签: ios variables global-variables didselectrowatindexpath

  • 我正在制作我的第一款应用。基本上我在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

2 个答案:

答案 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
}