Objective c 如何在AppDelegate中设置引用初始化的情节提要ViewController的变量

Objective c 如何在AppDelegate中设置引用初始化的情节提要ViewController的变量,objective-c,ios,storyboard,Objective C,Ios,Storyboard,根据我的阅读,我了解到我需要在AppDelegate中设置一个引用我的视图控制器的变量,以便我可以这样做。接收条形码扫描,然后调用控制器中的方法并传入该条形码扫描。所以我在AppDelegate中有这个 - (void)BarcodeDataArrived:(char *)BarcodeData; { [myViewController LoadBarcodePage:BarcodeData]; } 我知道,当我的蓝牙扫描仪扫描条形码时,会调用此方法。问题是myViewController对象

根据我的阅读,我了解到我需要在AppDelegate中设置一个引用我的视图控制器的变量,以便我可以这样做。接收条形码扫描,然后调用控制器中的方法并传入该条形码扫描。所以我在AppDelegate中有这个

- (void)BarcodeDataArrived:(char *)BarcodeData;
{
[myViewController LoadBarcodePage:BarcodeData];
}
我知道,当我的蓝牙扫描仪扫描条形码时,会调用此方法。问题是myViewController对象没有引用当前视图控制器,因此所有对象都为空

我不想创建myViewController的新实例,因为当应用程序加载时,故事板已经在创建它的实例。我只是希望能够引用故事板正在创建的相同对象。因此,如果我理解正确,我需要在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;
}
我该怎么做呢。我在网上找到的所有参考资料似乎都涉及NIB而不是故事板


这是我的第一个应用程序。救命啊

您不应该在应用程序代理中实现这一点。 为什么不尝试在ViewController中实现您的条形码数据呢

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

    }
然后在PrepareForSegue方法中,您可以将数据发送到目标控制器

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

    destinationController.BarcodeData=BarcodeData;

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

 AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
 [delegate.myVar doWhatever you want];

谢谢你的回答。问题是条形码可以在任何视图中扫描,并且从输入角度来看与视图完全无关。我需要从应用程序中的任何视图获取输入并将其传递出去。AppDelegate似乎是全球监听条形码到达的最佳场所。这不对吗?我正在遵循一个这样做的示例应用程序,但示例应用程序不使用故事板,并且故事板的初始化与我收集的NIB不同,因此我无法逐行复制代码。只是更新。使用您给我的最后两行代码,我能够将控制器实例保存到appdelegate,现在一切正常。据我所知,我可能最终需要重构它,但至少一切都正常!谢谢