2012-04-02 4 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 «Определяется все. Я ценю помощь. –

+3

Каждый раз, когда вы определяете свойство класса, для вас автоматически генерируются два метода (известные как методы getter/setter). Геттер - это просто имя свойства (например: '- (NSString *) transferStr') сеттер, хотя всегда начинается со словом' set' и именем свойства с первой буквой в столице (так ... ' setTransferStr'). Подробнее о свойствах [см. Документацию Apple] (http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocProperties.html). Кроме того, если этот ответ был тем, что вы искали, подумайте о его правильности. – Alladinian

Смежные вопросы