gpt4 book ai didi

ios - 从其他类iOS获取变量(位置信息)

转载 作者:行者123 更新时间:2023-11-29 10:40:37 26 4
gpt4 key购买 nike

在“OfferViewController.m”中我有一个 locationManager 函数。在 locationManager 函数中,我得到了 currentLatitude 和 currentLongitude。现在在“OfferDetailViewController.m”中,我想通过 JS 将位置发送到网站。

我的问题是,在“OfferDetailViewController.m”中我没有从“OfferViewController.m”中获取位置信息

希望有人能帮助我...这是我的代码。谢谢!

OfferViewController.m:

@interface OfferViewController ()

@end
...
#pragma mark -
#pragma mark CLLocationManagerDelegate

-(void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
{
NSString *currentLatitude = [[NSString alloc]
initWithFormat:@"%+.6f",
newLocation.coordinate.latitude];

//NSLog(@"locationManager - latitude: %@", currentLatitude);

NSString *currentLongitude = [[NSString alloc]
initWithFormat:@"%+.6f",
newLocation.coordinate.longitude];

//NSLog(@"locationManager - longitude: %@", currentLongitude);

OfferDetailViewController *offerDetailViewController = [[OfferDetailViewController alloc] init];
offerDetailViewController.longTest = currentLongitude;
offerDetailViewController.latTest = currentLatitude;
}

@end

OfferDetailViewController.m:

@interface OfferDetailViewController ()

@end
...
@synthesize latTest;
@synthesize longTest;
...
- (void)webViewDidFinishLoad:(UIWebView *)offerUrl {
NSLog(@"webViewDidFinishLoad");

if ([[self.offerUrl stringByEvaluatingJavaScriptFromString:@"document.readyState"] isEqualToString:@"complete"]) {
// UIWebView object has fully loaded.
NSLog(@"UIWebView object has fully loaded.");

NSLog(@"webViewDidFinishLoad - longTest: %@", longTest);
NSLog(@"webViewDidFinishLoad - latTest: %@", latTest);
...
}
}

最佳答案

由于您正在处理两个 View Controller ,因此建议使用 segues。 Xcode 的 Storyboard文件允许您以可视化方式使用 segues,只需一点编程帮助。

步骤

以下是完成问题中提出的问题的几个步骤。这些将在下面的其余答案中讨论。

  1. 在 Storyboard中创建一个 segue
  2. 在 Storyboard中命名 segue
  3. 创建一个 prepareForSegue: 方法并在接收 View Controller 中设置变量

在 Storyboard中进行转场

首先,我建议通过这些 segues 之一链接两个 View Controller 。为此,转到您的 Storyboard并查看您的起始 View Controller (在本例中为 OfferViewController)。找到将触发转换的按钮或单元格(某些 UI 元素)。然后点击键盘上的“控制”按钮并单击该 UI 元素。应该会出现一条蓝线。将该线拖到您要移动到的 View Controller (在您的情况下为 OfferDetailViewController),然后释放。然后,从显示的选项中选择您喜欢的转换类型(通常,如果 View 是详细 View ,您希望选择“推送”,但除非您有 UINavigationController 设置,否则这将引发错误。选择“模态”,如果你不知道我刚才说的是什么)。您的最终结果应如下所示:

How a modal segue looks. If your segue is not modal, the icon in the middle will be different.

在 Storyboard中命名 segue

接下来,您要命名您的 segue,以便您可以通过编程方式访问它。继续并单击 segue 的中心图标。 Xcode 中的右侧栏应翻转为如下所示的 View :

Editing the segue name

现在,在标识符框中,输入您的 segue 名称。这可以是您想要的任何内容,但请记住它是什么,因为我们稍后会用到它。我还建议概述 segue 识别的一般模式,这样如果你有很多 segue,你就不必一直引用 Storyboard ,但对于刚刚开始的事情,没有必要过分强调。

在接收 View Controller 中设置变量

这部分我们必须以编程方式完成。 Apple 在 UIViewController 中定义了一个方便的函数(因此,可以从任何 UIViewController 访问)。如果此函数为“prepareForSegue:”,则为名称。让我们利用这一点。

# pragma mark - SEGUE PREPARATION

/**
* This method prepares to transition from THIS contoller to another controller that will
* display the data in more detail.
*/

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

/* Verify this is indeed the segue you want; replace "YourSegueName" to whatever you
named your segue. */
if ([[segue identifier] isEqualToString:@"YourSegueName"]) {
OfferDetailViewController *receiverController = (OfferDetailViewController *)[segue destinationViewController];

/* here you can set whatever variables you want in 'receiverController'. These
will be accessible in the viewDidLoad: method. An example is given below. */
[receiverController setWhateverVariable:valueOfWhateverVariable];
}
}

就是这样!数据应该传输到您的新 View Controller ,您应该可以开始了!

关于ios - 从其他类iOS获取变量(位置信息),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24717631/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com