[英]Destination ViewController not changing after segue
我的目標ViewController有許多標簽和圖像,需要根據以前的特定ViewController進行更改。 我已經設置了segue,應該更改這些設置,但是由於某種原因,即使正在調用segue,也不能更改這些設置。
我最初的ViewController有一個按鈕,其中一個按鈕會傳遞給名稱為“ aName”的下一個ViewController。 我可能缺少一些簡單的東西,但是我一直在關注代碼的另一部分,該部分完全相同並且可以正常工作! 我還測試了成功通過NSLog成功調用segue。 所有IBOutlets也已正確分配。
初始View Controller.m:
#import "dViewController.h"
-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"aName"]) {
dViewController *dVC = (dViewController *)segue.destinationViewController;
dVC.TitleLabel.text = @"abc";
dVC.1Img.image = [UIImage imageNamed:@"somepath.jpg"];
dVC.2Img.image = [UIImage imageNamed:@"somepath2.jpg"];
[dVC.1Button setTitle:@"abcd" forState:UIControlStateNormal];
[dVC.1Button setTitle:@"efgh" forState:UIControlStateNormal];
}
目標ViewController:
dViewController.h
@property (strong, nonatomic) IBOutlet UILabel *TitleLabel;
@property (strong, nonatomic) IBOutlet UIImageView *1Img;
@property (strong, nonatomic) IBOutlet UIImageView *2Img;
@property (strong, nonatomic) IBOutlet UIButton *1Button;
@property (strong, nonatomic) IBOutlet UIButton *2Button;
編輯:從做更多環顧四周,我認為我應該使用一個委托。 似乎很復雜,我不確定從哪里開始。 但是,我將看看該線程中的內容:在另一個視圖控制器中更改標簽的文本
您必須為每個要更改的標簽創建一個變量,然后在viewDidLoad中將變量賦給label.text
例如
- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"aName"]) {
dViewController *dVC = (dViewController *)segue.destinationViewController;
dVC.titleString = @"abc";
dVC.1Image = [UIImage imageNamed:@"somepath.jpg"];
dVC.2Image = [UIImage imageNamed:@"somepath2.jpg"];
dVC.1ButtonString=@"ButtonTitle";
dVC.2ButtonString=@"ButtonTitle2";
}
在DestinationController中
@property (strong, nonatomic) IBOutlet UILabel *TitleLabel;
@property (strong, nonatomic) IBOutlet UIImageView *1Img;
@property (strong, nonatomic) IBOutlet UIImageView *2Img;
@property (strong, nonatomic) IBOutlet UIButton *1Button;
@property (strong, nonatomic) IBOutlet UIButton *2Button;
@property(strong,nonatomic)NSString *2ButtonString;
@property(strong,nonatomic)UIImage*1Image;
@property(strong,nonatomic)UIImage*2Image;
@property(strong,nonatomic)NSString* titleString;
@property(strong,nonatomic)NSString *1ButtonString;
@property(strong,nonatomic)UIImageView *1Img;
@property(strong,nonatomic)UIImageView *1Img;
- (void)viewDidLoad{
self.TitleLabel.text = self.titleString;
self.1Img.image = self.1Image;
self.2Img.image = self.2Image;
[self.1Button setTitle:self.1ButtonString];
[self.2Button setTitle:self.1ButtonString];
}
希望對您有幫助,問題在於
dViewController *dVC = (dViewController *)segue.destinationViewController;
您只帶控制器而不是視圖。 並且IBOutlet屬於該視圖,並且該視圖未加載,我希望您理解
像這樣在segue.destinationViewController周圍加上括號:
dViewController *dVC = (dViewController *)(segue.destinationViewController);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.