2013-10-06 5 views
0

У меня есть табличное представление с ячейками, и каждая ячейка толкает detailViewController. Я хочу назначить текст ячейки textLabel в detailViewController.Доступ к тексту из свойства другого класса

.h класс MasterView

@property (strong,nonatomic) NSString *selectedCellText; 

.m класса MasterView

@synthesize selectedCellText = _selectedCellText; 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    self.selectedCellText = [[[tableView cellForRowAtIndexPath:indexPath] textLabel] text]; 
    NSLog(@"%@",self.selectedCellText); 
} 

Здесь NSLog печатает имя ячейки

.h из detailViewController

@property (nonatomic, copy) listOfTricksViewController *aReference; 

.m из detailViewController

@synthesize aReference = _aReference; 

- (void)viewDidLoad 
{ 

    [super viewDidLoad]; 
    self.detailViewName.text = self.aReference.selectedCellText; 
    NSLog(@"%@",self.aReference.selectedCellText); 
} 

Здесь NSLog отпечатки null.

+0

Адрес, где вызывается detailViewController в коде таблицыViewView? – RFG

+0

- (void) prepareForSegue: (UIStoryboardSegue *) segue отправитель: (id) отправитель { if ([[идентификатор segue] isEqualToString: @ "detailTrick"]) { NSString * object = nil; NSIndexPath * indexPath = nil; indexPath = [self.tableView indexPathForSelectedRow]; объект = self.cellObjects [indexPath.row]; } } - (void) setEditing: (BOOL) редактирование анимированный: (BOOL) анимированный { [super setEditing: редактирование анимированный: анимированный]; } –

ответ

0

Измените метод prepareForSegue так:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if([[segue identifier] isEqualToString:@"detailTrick"]) 
    { 
     DetailViewController *detailViewController = (DetailViewController *)segue. 
     NSString *object = nil; 
     NSIndexPath *indexPath = nil; 
     indexPath = [self.tableView indexPathForSelectedRow]; 

     // Pass data 
     detailViewController.aString = self.cellObjects[indexPath.row]; 
    } 
} 

Вам нужно позвонить своему DetailViewController и пересылать данные в этом контроллере (предположим, здесь у вас есть @property aString в вашем заголовке DetailViewController)

. ч detailViewController

@property (nonatomic, strong) NSString *aString; 

.m из detailViewController

- (void)viewWillAppear:(BOOL)animated 
{ 

    [super viewWillAppear:animated]; 

    self.detailViewName.text = self.aString; 
    NSLog(@"%@",self.aString); 
} 
+0

метод prepareForSegue находится в классе MasterView –

+0

да, конечно. Вы попробовали это? –

+0

2013-10-06 14: 18: 30.715 trickListApp [308: 60b] - [UIStoryboardPushSegue setAString:]: нераспознанный селектор отправлен в экземпляр 0x146b71e0 2013-10-06 14: 18: 30.719 trickListApp [308: 60b] *** Завершение приложения из-за неперехваченного исключения «NSInvalidArgumentException», причина: '- [UIStoryboardPushSegue setAString:]: непризнанный селектор, отправленный экземпляру 0x146b71e0' –

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