2016-12-13 28 views
0

我是新來這個,我試圖改變在另一個視圖控制器中的文本框的文本,我只是寫這樣的事情在準備賽格瑞,爲什麼我的賽格瑞沒有工作?在Xcode的目標C


-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 

    secondViewcontroller *transferViewController = segue.destinationViewController; 

    NSLog(@"prepareForSegue: %@", segue.identifier); 
    if([segue.identifier isEqualToString:@"1"]){ 
     transferViewController.IDtextfield.text = @"1"; 
    } 
    else if([segue.identifier isEqualToString:@"2"]){ 
     transferViewController.IDtextfield.text= @"2"; 
    } 
    else if([segue.identifier isEqualToString:@"3"]){ 
     transferViewController.IDtextfield.text = @"3"; 
    } 
    else if([segue.identifier isEqualToString:@"4"]){ 
     transferViewController.IDtextfield.text = @"4";  
    } 
} 

誰能告訴我,如果有什麼錯?

+0

您是否在「Storyboard」中設置了故事板segue標識符? – Amanpreet

+1

**什麼**不起作用? – vadian

+0

你是如何推視圖控制器。請顯示代碼。 – iPeter

回答

0

試試這個代碼:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
    { 

     if ([[segue identifier] isEqualToString:@"1"]) 
     { 
      SecondViewController *transferViewController = [segue destinationViewController]; 
    transferViewController.data = @"1"; 
     } 
    else if ([[segue identifier] isEqualToString:@"2"]) 
     { 
      SecondViewController *transferViewController = [segue destinationViewController]; 
    transferViewController.data = @"2"; 
     } 
    else if ([[segue identifier] isEqualToString:@"3"]) 
     { 
      SecondViewController *transferViewController = [segue destinationViewController]; 
    transferViewController.data = @"3"; 
     } 
    else{ 
      SecondViewController *transferViewController = [segue destinationViewController]; 
    transferViewController.data = @"4"; 
     } 

} 

SecondViewController.h

@interface SecondViewController : UIViewController 
     @property (nonatomic, readonly) NSString* data; 
@end 

SecondViewController.m

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 
    IDtextfield.text = self.data; 
} 

注意:創建VC的對象時,它只是創建該VC的引用,即創建SecondVC的對象時,它不會將完整的控制器加載到內存中。這意味着,TextField不在內存中,這就是爲什麼直到VC未加載時才能設置textField的文本。

在這裏,我只是發送我想要在文本字段中設置的數據,在VC加載後,我設置了文本字段文本。

0

嘗試語法像: -

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    // Make sure your segue name in storyboard is the same as this line 
    if ([[segue identifier] isEqualToString:@"YOUR_SEGUE_NAME_HERE"]) 
    { 
     // Get reference to the destination view controller 

     YourViewController *vc = [segue destinationViewController]; 

     // Pass any objects to the view controller here, like... 
     [vc setMyObjectHere:object]; 
    } 
} 
+1

這是老式的語法,使用點語法不會導致錯誤。 – vadian