[英]ios Pass data from TabbarController to ViewController in Storyboard
[英]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.