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

尝试更改

  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
}

相关内容

  • 没有找到相关文章

最新更新