2012-04-02 19 views
3
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    NSLog(@"prepareForSegue: %@", segue.identifier); 
    if([segue.identifier isEqualToString:@"returnText"]) 
    { 
     [segue.destinationViewController setText:@"New String"]; 
    } 
} 


-(void)setText:(NSString*)transferString; 
{ 
    NSString* result = [NSString stringWithFormat:@"%@", transferString]; 
    NSLog(@"Got transfer %@", result); 
    //Prints correct string 
    LabelText.text=result; 
    NSLog(@"Labeltext %@\n",LabelText.text); 
    //NSLog outputs null 
    //Doesn’t update the label 
} 

我希望標籤切換後的新文字更新...轉接的NSString一個UILabel用故事板塞格斯

回答

8

試試這個:

// In your destination controller .h file 
@property (nonatomic, copy) NSString *transferStr; 

// In your destination controller .m file 
@synthesize transferStr; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.LabelText.text = self.transferStr; 
} 

// In your first controller .m file 
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    NSLog(@"prepareForSegue: %@", segue.identifier); 
    if([segue.identifier isEqualToString:@"returnText"]) 
    { 
     [segue.destinationViewController setTransferStr:@"New String"]; 
    } 
} 

測試和工作...

不要忘了在第一個控制器中包含目標控制器的.h文件。

這個問題可能是該的UILabel不是實例然而,當prepareForSegue方法被調用,這就是爲什麼它是在那個特定的時間空...

+0

偉大工程......我不明白怎麼「setTransferStr 「得到定義就是一切。我很感激幫助。 – 2012-04-02 22:31:41

+3

每次在類上定義一個屬性時,都會自動爲您生成兩個方法(稱爲getter/setter方法)。 getter只是屬性的名字(比如:' - (NSString *)transferStr'),setter雖然始終以單詞「set」開始並且首字母大寫的屬性名稱(所以......) setTransferStr')。有關屬性的更多信息[請參閱Apple的文檔](http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocProperties.html)。此外,如果這個答案是你正在尋找的,請考慮將其標記爲正確。 – Alladinian 2012-04-03 07:47:36

相關問題