簡體   English   中英

將信息傳遞到故事板上的ViewController

[英]Pass info to viewcontroller on storyboard

我剛開始使用情節提要,而我正面臨這種情況:uinavigationcontroller包含一個視圖控制器(根控制器),該控制器包含十個按鈕,每個按鈕通過情節提要鏈接到同一視圖控制器。

第二個視圖控制器的行為取決於在第一個視圖控制器中點擊的按鈕,但是如何識別哪個按鈕被點擊(如標記值)並將此信息傳遞給第二個視圖控制器?

謝謝。

要補充丹尼爾的答案:

首先,在您的第二個VC上添加一個公共屬性,該公共屬性可從第一個VC訪問:

@interface SecondViewController : UIViewController 

@property (nonatomic) int buttonTagClicked;

@end

您需要在UIButton上設置標簽。 這可以在情節提要中完成,也可以在您的代碼中以編程方式完成。 我將創建每個按鈕都鏈接到的通用IBAction 您可以稍后通過sender參數從按鈕上提取標簽。

- (IBAction)buttonClicked:(id)sender
{
  [self performSegueWithIdentifier:@"pushSegue" sender:sender];
}

鏈接到

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
  if ([segue.identifier isEqualToString:@"pushSegue"]) {
    SecondViewController *destinationVC = (SecondViewController *)[segue destinationViewController];
    UIButton *selectedButton = (UIButton *)sender;
    destinationVC.buttonTagClicked = selectedButton.tag;
  }
}

您可以為每個連接設置segueIdentifier 然后,您可以在ViewController中根據您設置的標識符觸發一個動作。

例如:

如果在情節提要中選擇連接,則可以命名為:

在此處輸入圖片說明

並且在您的ViewController中,您可以根據以下標識符觸發操作:

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"segue1"]) {
        UIViewController *destinationVC = [segue destinationViewController];
        destinationVC.property = ...;
    }
}

暫無
暫無

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

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