【问题标题】:didSelectRowAtIndexPath: transferring the text value to another methoddidSelectRowAtIndexPath:将文本值转移到另一个方法
【发布时间】: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)。
  • 哇,这很容易。谢谢。

标签: ios variables global-variables didselectrowatindexpath


【解决方案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 是否具有正确的值。我现在也实施了您的更新。感谢您的评论。
    猜你喜欢
    • 2013-07-22
    • 2016-08-25
    • 1970-01-01
    • 2014-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多