【问题标题】:How to copy UITableViewCell label to UILabel in nextView?如何将 UITableViewCell 标签复制到 nextView 中的 UILabel?
【发布时间】:2013-02-19 18:49:09
【问题描述】:

我只想将 UITableViewCell 的标签(这是一个简单的字符串)复制到 nextView 的 UIlabel 中。 我尝试在 nextView 中创建一个字符串属性并将其传递给单元格标签, 但它不起作用。 我在 nextView 中得到零, 这是为什么?这是我的 didSelectRowAtIndexPath 方法 在 rootViewController.m

    -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        NSString *selLabel =[tempArray objectAtIndex:indexPath.row];
        DetailViewController *detailViewCont=[[DetailViewController alloc]initWithNibName:@"DetailViewController" bundle:nil];
detailViewCont.selectedLabel=selLabel;        
[self.navigationController pushViewController:detailViewCont animated:YES];

      NSLog(@"selected Label %@",detailViewCont.selectedLabel);
    }

最后一个 NSlog 语句在这里返回正确的字符串。

在 nextViewController.m 中

-(void)viewDidLoad
{
[super viewDidLoad];
selectedLabel=[[NSString alloc]init];

UILabel *label1=[[UILabel alloc]init];
    label1.frame=CGRectMake(5,5,310, 60);
    label1.font=[UIFont fontWithName:@"Arial Black" size:20];
    label1.text=selectedLabel;
    NSLog(@"sellabel %@",selectedLabel);
 [self.View addSubview:label1];
}

这里的NSLog语句返回null

【问题讨论】:

  • selLabel nil?是tempArraynil
  • 查看我更新的问题

标签: ios objective-c uitableview uilabel nslog


【解决方案1】:

viewDidLoad方法中删除以下行:

selectedLabel=[[NSString alloc]init];

这是清除您从其他视图控制器设置的值。

还有这一行:

label1.text=selectedLabel;

应该是:

label1.text = self.selectedLabel;

你设置了一个属性,使用它。

【讨论】:

    【解决方案2】:

    尝试在 pushViewController 语句之前设置 selLabel,如下所示,

    detailViewCont.selectedLabel=selLabel;
    [self.navigationController pushViewController:detailViewCont animated:YES];
    

    【讨论】:

    • 您缺少将标签从 tableviewcell 分配给 label1 的代码。您初始化 selectedLabel 字符串并将其分配给 label1,然后再设置它的值。
    • 我有名为 tempArray @shyamsundar1988 的 tableViewCell 标签数组
    【解决方案3】:

    pushViewController 呼叫之前移动您的线路detailViewCont.selectedLabel=selLabel;。您在分配值之前呈现视图控制器。

    @interface DetailViewController
    
    ...
    @property (strong, nonatomic) NSString *selectedLabel;
    
    @end
    
    @implementation DetailViewController
    @synthesize selectedLabel = _selectedLabel; // define the instance variable associated with the property
    
    -(void)viewDidLoad {
      label1.text = _selectedLabel;
    }
    
    @end
    

    【讨论】:

    • 在 nextViewController.m 中不是 selectedLabel 属性吗?这就是你传递其他 VC 的标签的方式?如果是这样,您不想将其分配给新字符串。
    • 我没有让你简化
    • 更新了答案以希望澄清
    • 终于明白了......我刚刚删除了 selectedLabel=[[NSString alloc]init];来自 nextViewController 的 viewDidLoad
    • 其他一切照旧
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-31
    • 1970-01-01
    • 2018-01-18
    • 2014-02-11
    • 2011-12-02
    • 2020-08-26
    相关资源
    最近更新 更多