0

你好,我相信你们都可以回答这个问题,但它让我很烦,因为我很愚蠢。

我有一个数组,可以存储didSelectRowAtIndexPath行,然后存储 NSLog formatSelected。然后我弹出视图控制器并将 formatSelected 显示为按钮标题。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    NSString *formatSelected = [[NSString alloc]init];
    formatSelected:[format objectAtIndex:indexPath.row];
    NSLog(@"this is the format selected %@",formatSelected);
    [button2 setTitle:[format objectAtIndex:indexPath.row] forState:UIControlStateNormal];
    [navigationControler popViewControllerAnimated:YES];
}

这很好用。

我的问题是,在新标题按钮所在的上一个视图中,我有另一个按钮和一个标签。

我希望能够按下第二个按钮并在标签或 NSLog 中显示 formatSelected String

-(IBAction)printResults{
NSString *fmat = [[NSString alloc]initWithFormat:@"%@",formatSelected];
NSLog(@"%@",fmat);
    NSLog(@"nslong button pressed");}

但是 NSLog 只显示(空)?

我有@property (nonatomic, retain) NSString *formatSelected;并合成了它。

我究竟做错了什么?

4

2 回答 2

1

formatSelected在方法中声明为局部变量tableView:didSelectRowAtIndexPath:。在方法退出后,您在此方法中分配的任何内容都formatSelected将不再可访问。您正在将所选格式分配给此局部变量,而不是您的属性(及其相应的实例变量)。

完全使用[self setFormatSelected:[format objectAtIndex:indexPath.row]];和删除NSString *formatSelected...线。

于 2012-06-28T23:40:44.267 回答
0

您几乎总是希望使用copyNSString *,而不是retain. 有关更多信息,请参阅此答案:NSString 属性:复制还是保留?

于 2012-06-28T23:27:55.203 回答