簡體   English   中英

如何在我的AppDelegate中設置一個引用初始化的Storyboard ViewController的變量

[英]How Do I Set A Variable In My AppDelegate That References The Initialized Storyboard ViewController

根據我的閱讀情況,我了解到我需要在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;
}

我該怎么做。 我在NET上找到的所有參考書似乎都包含筆尖,而不是情節提要。

這是我的第一個應用程序。 請幫助!

您不應該在應用程序委托中實現該功能。 為什么不嘗試在ViewController中實現BarcodeDataArrived呢?

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

    }

然后,在prepareForSegueMethod中,您可以將數據發送到目標控制器

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM