initwithnibname将变量传递给下一个视图

时间:2011-12-17 16:24:37

标签: iphone xcode

我有一个视图,我在那里读取json数据。并从中提取密钥。

in - (void)viewDidLoad { 我做了以下事情:

hotellat = [rows4 valueForKey:@"H_LAT"];
hotellon = [rows4 valueForKey:@"H_LON"];

然后我在viewDidLoad之后执行推送,如下所示:

- (IBAction)buttonClicked:(id)sender
{
    NSLog(@"hotellat: %@",hotellat);
    MapTutorialViewController *controller = [[MapTutorialViewController alloc] initWithNibName:@"MapTutorialViewController" bundle:[NSBundle mainBundle]];
    controller.LAT = hotellat;
    controller.LON = hotellon;
    [self.navigationController pushViewController:controller animated:YES];
    [controller release];
}

本节中的NSlog显示hotellat为null,但是当我在viewDidload中编写nslog时,有一个值。为了让这个变量传递给下一个视图我需要做什么?这也是一个字符串,我想我需要将它转换为整数,以便我可以将它分配给地图视图中的纬度?

我也@synthesize hotellat,hotellon;在控制器中并在.h文件中包含以下内容:

@property (nonatomic, retain) NSString *hotellat;
@property (nonatomic, retain) NSString *hotellon;

1 个答案:

答案 0 :(得分:0)

虽然您正在使用保留变量,但保留消息未通过此分配发送到值:

hotellat = [rows4 valueForKey:@"H_LAT"];
hotellon = [rows4 valueForKey:@"H_LON"];

使用:

self.hotellat = [rows4 valueForKey:@"H_LAT"];
self.hotellon = [rows4 valueForKey:@"H_LON"];

这样保留消息将传递给值,并确保它保持在那里直到你明确地释放它。

稍后您可以释放值: 接下来说:[controller release];

[hotellat release];
[hotellon release];