2015-06-06 4 views
3

Я искал передачу данных метки на другой контроллер представления и нашел следующее решение. Однако он не отображает текст метки в другом контроллере представления.Как передать данные метки на другую метку во втором контроллере представления

пожалуйста, помогите

SecondViewController Заголовок

@interface SecondViewController : UIViewController 
{ 
    IBOutlet UILabel *copy; 
} 

@property (nonatomic, retain) NSString *data; 

В реализации SecondViewController

copy.autoresizingMask = UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth| UIViewAutoresizingFlexibleBottomMargin; 
copy.textAlignment = NSTextAlignmentCenter; 
copy.text = [NSString stringWithFormat:@"Your data: %@", _data]; // Make use of the exposed data property 
[self.view addSubview:copy]; 

В реализации FirstViewController

- (void)passDataForward 
{ 
    SecondViewController *secondViewController = [[SecondViewController alloc] init]; 
    secondViewController.data = _label.text; // Set the exposed property 
    [self.navigationController pushViewController:secondViewController animated:YES]; 
} 
+0

вы не указали кадр для метки. Где этот код установки метки в SecondViewController, убедитесь, что это действительно после того, как данные были установлены. – luk2302

+0

сделал я проверить мой ответ –

+0

@katie спасибо чувак –

ответ

1

1. Сохранение строки контента в первом файле реализации и загружать его во втором

Сохранить label.text в первом классе:

[[NSUserDefaults standardUserDefaults] setObject:Label.text forKey:@"Your key"]; 

загрузить его во втором классе:

Label.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"Your key"]; 

2. Используйте параметры

в первом классе вы должны implemen t второй #import "SecondClassName.h"
Во втором классе создайте функцию с параметрами.

- (void)setLabelText:(NSString *)LabelText 
{ 
    Label.text = LabelText 
} 

А в первом классе вы передаете данные, добавляя эти две строки:

SecondViewControllerName *Second = [[SecondViewControllerName alloc] init]; 
[Second setLabelText:label.text]; 
+0

Я только что попробовал метод 2, [Второй комплектLabelText: label.text]; возвращает ошибку «NO visible @interface для« SecondViewController »объявляет селектор« setLabelText: » – katie

+0

Вы должны реализовать свой второй класс в первую очередь, поэтому в первом классе скажите: #import« SecondViewController.h ». – Developer

+0

И если это не работает, вы всегда можете использовать метод 1. Это может быть проще. Просто сохраните текст метки в классе 1 и загрузите его в класс 2. Это всегда будет работать. – Developer

1

лучше, чтобы пройти NSString затем NSUserDefaults. Только для передачи данных будет лучше, если вы используете NSString

SecondViewController *secondViewController = [[SecondViewController alloc] init]; 
secondViewController.Stringdata = _label.text; // Set the exposed property 
[self.navigationController pushViewController:secondViewController animated:YES]; 

В SecondViewController

@interface SecondViewController :UIViewController 
{ 

}  
@property (nonatomic, retain) NSString* name; 

В месте, чтобы установить текст в метке можно использовать

Label.text = Stringdata 
Смежные вопросы