0

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

    -(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

4

3 回答 3

1

viewDidLoad从您的方法中删除以下行:

selectedLabel=[[NSString alloc]init];

这是清除您从另一个视图控制器设置的值。

而这一行:

label1.text=selectedLabel;

真的应该是:

label1.text = self.selectedLabel;

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

于 2013-02-19T19:39:39.973 回答
0

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

detailViewCont.selectedLabel=selLabel;
[self.navigationController pushViewController:detailViewCont animated:YES];
于 2013-02-19T19:09:11.573 回答
0

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

@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
于 2013-02-19T19:09:19.450 回答