gpt4 book ai didi

objective-c - 如何在我的 AppDelegate 中设置一个引用已初始化的 Storyboard ViewController 的变量

转载 作者:行者123 更新时间:2023-11-28 17:34:08 24 4
gpt4 key购买 nike

根据我的阅读,我了解到我需要在我的 AppDelegate 中设置一个引用我的 View Controller 的变量,这样我才能做这样的事情。接收条形码扫描并随后调用 Controller 中的方法并传入该条形码扫描。所以我的 AppDelegate 中有这个。

- (void)BarcodeDataArrived:(char *)BarcodeData;
{
[myViewController LoadBarcodePage:BarcodeData];
}

我知道当我的蓝牙扫描仪扫描条形码时会调用此方法。问题是 myViewController 对象没有引用当前 View Controller ,因此所有对象都是空的。

我不认为我想创建一个新的 myViewController 实例,因为 Storyboard已经在应用程序加载时创建了它的一个实例。我只想能够引用 Storyboard正在创建的同一对象。所以,如果我理解正确,我需要在我的 AppDelegate 中做这样的事情来设置变量:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:  (NSDictionary *)launchOptions
{

// I Want To Set A Reference To My View Controller Here Such As...

myViewController = aViewController;

// Where aViewController Is What The Storyboard Initialized.

return YES;
}

我该怎么做。我在 NET 上找到的所有引用资料似乎都涉及 Nib 而不是 Storyboard。

这是我的第一个应用程序。请帮忙!

最佳答案

您不应该在您的 App Delegate 中实现它。那你为什么不尝试在 ViewController 中实现你的 BarcodeDataArrived

- (void)BarcodeDataArrived:(char *)BarcodeData {
[self performSegueWithIdentifier:@"toMyViewControllerSegue"
sender:self];

}

然后在prepareForSegueMethod中你可以发送数据到 objective-c ontroller

 -(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
myViewController *destinationController= (myViewController * )segue.destinationViewController;

destinationController.BarcodeData=BarcodeData;

}

现在,如果您不想更改 View ,那么您必须尝试另一种方法,myViewController 应该是一个对象(或类)并在其中实现 LoadBarcodePage 方法。您可以在委托(delegate)中拥有该对象,并且可以通过使用

在任何类中引用它
 AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
[delegate.myVar doWhatever you want];

关于objective-c - 如何在我的 AppDelegate 中设置一个引用已初始化的 Storyboard ViewController 的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10341603/

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