2014-01-18 84 views
0

我在Storyboard中有2個簡單視圖,並且都使用相同的ViewController。我有以下代碼來切換第二個視圖...IOS7在segue之前在不同視圖中更改標籤的值(相同的控制器)

self.labelStatus.text = @"CHECKING"; 
[self performSegueWithIdentifier:@"LoginSuccess" sender:sender]; 

* labelStatus在第二個視圖上。

由於某些原因,標籤文本沒有改變。任何人都可以提出這是爲什麼?

+1

做這個prepareSegue方法 –

+0

@C_X我能問爲什麼? – LiamB

+1

因此,視圖對象被初始化...在執行目標視圖之前不會在內存中,並且當您調用執行時,它實際上會創建目標視圖控件並將啓動該過程。但爲了更好地瞭解我們的問題,我會建議更多的代碼。 –

回答

1
[self performSegueWithIdentifier:@"LoginSuccess" sender:sender]; 

//改變prepareForSegue:方法

標籤值
- (void)prepareForSegue:(UIStoryboardSegue *)segue { 
    if ([segue.identifier isEqualToString:@"LoginSuccess"]) { 
     UIViewController *loginVC = segue.destinationViewController; 

     //declare the string in .h file and assign it in viewDidLoad in loginVC 

     loginVC.labelString = @"CHECKING"; 
    } 
} 

in loginViewController.h file

@property(nonatomic, strong) NSString *labelString; 

loginViewController.m文件

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.labelStatus.text = labelString 
} 
+0

在這個階段(IE中的Prepare方法),我似乎沒有訪問新視圖的UI(全返回null)。我可以訪問屬性,但不能訪問UI – LiamB

+0

我已經編輯了答案,您需要在.h文件中聲明字符串屬性,然後將該字符串值分配給viewVCid方法中loginVC中的標籤。 – suhit

+0

是的,這是門票。我只是想辦法做到這一點。 – LiamB

0

編輯- 如果您需要更改相同視圖控制器中的標籤,則應該在prepareForSegue方法中修改標籤。

+0

它與ViewController相同。 – LiamB

+0

它是同一類還是同一個實例? – kkodev

+0

您似乎沒有從Prepare方法訪問UI,只有屬性。 – LiamB

1

可以在prepareForSegue:方法,它是在執行前賽格瑞稱爲自定義destinationViewController(屬性,意見等):

- (void)prepareForSegue:(UISegue *)segue { 
    if ([segue.identifier isEqualToString:@"mySegue"]) { 
     UIViewController *destVC = segue.destinationViewController; 
     // do your customisation 
    } 
} 
相關問題