2015-07-28 5 views
0

У меня проблема с набором текста на этикетках. Этикетки declarated в class1, но я хочу использовать его и установить его в class2, где я хочу, чтобы установить данные, зависящие от выбранной строки в Tableview (реализуется в class2)Как установить метки из другого класса

мой declatation в class1:

@property (weak, nonatomic) IBOutlet UILabel *trackNameDetailsLabel; 

мой метод в class2 (я попробовать это, но не работает):

-(void)setLabels { 

    self.trackNameDetails = self.result.trackName; 
} 

result.trackName является отзыв к данным, которые хранятся в файле URL-адрес

Спасибо заранее.

+0

из вас войти этот '' self.result.trackName; аут данные показывая правильно? – random

+0

Я использую что-то вроде этого: 'cell.trackNameLabel.text = [NSString stringWithFormat: @"% @ ", self.result.trackName]; 'в наборе меток в tableView и он работает; и я хочу установить одну и ту же строку в метке в следующем представлении – sash

ответ

0

Вы можете дать классу 2 ссылку класса 1 из себя, сделав переменную типа Class1 *referenceOf1 = self и добавив @class Class1; в начало класса 2. Затем в классе 2 вы можете сделать экземпляр класса 1 и вызвать эту ссылку ,

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

http://www.galloway.me.uk/tutorials/singleton-classes/

0

Похоже, у вас есть trackNameDetails для 2-го класса, но вы хотите установить значение trackNameDetailsLabel в классе 1 Так код

-(void)setLabels { 

    self.trackNameDetails = self.result.trackName; 
} 

будет только установить trackNameDetails свойств в классе 2.

Вам нужно указать ссылку, которая может быть примером класса 1 для класса 2, как сказал Коул. В классе 2,

@property(strong, nonatomic) Class1 * class1; 
-(void)setLabels { 

    class1.trackNameDetails = self.result.trackName; 
} 

Не забудьте установить Class1 к экземпляру Class1 перед использованием этого метода

+0

Я добавляю в класс2.m '@property (сильный, неатомный) DetailsViewController * detailsViewController;' DetailsViewController - это мой класс1; в методе setLabel i make 'DetailsViewController.trackNameDetailsLabel = [NSString stringWithFormat: @"% @ ", self.result.trackName];' но теперь Xcode скажет мне, что свойство trackNameDetailsLabe не найдено на объекте типа 'DetailsViewController', где у меня есть объявления этого Метка. – sash

+0

Вы объявили свойство trackNameDetailsLabel в заголовочном файле class1? – riowww

+0

Да, я пробовал что-то вроде этого 'DetailsViewController * new = [[DetailsViewController alloc] init]; new.trackNameDetailsLabel.text = [NSString stringWithFormat: @ "% @", result.trackName] ;, но текст не отображается на ярлыке, но когда я хочу показать в консоли, это работает ['NSLog (@"% @ " , result.trackName); '] – sash

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