【问题标题】:initwithnibname pass variable to next viewinitwithnibname 将变量传递给下一个视图
【发布时间】:2011-12-17 16:24:36
【问题描述】:

我有一个读取 json 数据的视图。并从中提取密钥。

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

【问题讨论】:

    标签: iphone xcode


    【解决方案1】:

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

    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];
    

    【讨论】:

    • 在mapview中使用需要先将NSString转成float,CGFloat lat = [hotellat floatValue];
    • 再次感谢。我确实设法将变量传递给下一个视图。但是将它们转换为浮点数不起作用: CGFloat Nlat = [hotellat floatValue]; CGFloat Nlon = [hotellon floatValue]; NSLog(@"纬度: %@",Nlat); NSLog(@"Lon: %@",Nlon);此时模拟器崩溃,我在日志中看到: iProject[15057:11603] Lat: (null) 2011-12-17 18:49:35.753 iProject[15057:11603] Lon: (null) 2011-12-17 18:49:35.754 iProject[15057:11603] -[__NSArrayI floatValue]:无法识别的选择器发送到实例 0x6d6f360
    • 我们使用 %f 格式化程序来打印浮点值。将您的日志更改为:NSLog(@"Lat: %f",Nlat);
    • 你需要加强你的基础,否则你会卡在编码的每一步..!!
    • 好的,我使用了这种格式。它又崩溃了。但是这次日志没有显示 null 而是显示了这个: Lat: 0.000000 但是在转换为浮点数之前的字符串是 34.3456
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-05
    • 2012-04-25
    相关资源
    最近更新 更多