2015-11-11 5 views
0

Я хочу передать NSInteger из tableViewController (HistoryTableViewController) в другой viewController (InformationViewController), но, по-видимому, он не отвечает на мой селектор.Делегат не отвечает на селектор

HistoryTableViewController.h:

@class HistoryTableViewController; 

@protocol HistoryTableViewControllerDelegate <NSObject> 
- (void)addItemViewController:(HistoryTableViewController *)controller passItem:(NSInteger *)rowNum; 
@end 

@interface HistoryTableViewController : UITableViewController { 
    NSInteger row; 
} 

@property (nonatomic, weak) id <HistoryTableViewControllerDelegate> delegate; 

@end 

HistoryTableViewController.h

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    row = [self.tableView indexPathForSelectedRow].row; 
    } 

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 

if ([segue.identifier isEqualToString:@"informationSegue"]) { 
    if([self.delegate respondsToSelector:@selector(addItemViewController:passItem:)]){ 
     [self.delegate addItemViewController:self passItem:&(row)]; 
     } 
    } 
} 

InformationViewController.h:

@interface InformationViewController : UIViewController <HistoryTableViewControllerDelegate> 
@property (nonatomic, assign) NSInteger rowIn; 

InformationViewController.m

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 

if ([segue.identifier isEqualToString:@"informationSegue"]) { 
    HistoryTableViewController *historyvc = segue.destinationViewController; 
    historyvc.delegate = self; 
    } 
} 

- (void) addItemViewController:(HistoryTableViewController *)controller  passItem:(NSInteger *)rowNum { 
    rowIn = *rowNum; 
} 

«informationSegue» - это мой segueIdentifier для перехода от HistoryTableViewController к InformationViewController.

+0

Какой VC перешел на другой? Похоже, вы ожидаете, что 'prepareForSegue: отправитель:' целевого VC будет запущен, когда он будет перенаправлен. – Avi

+0

Кроме того, почему вы передаете указатель на переменную экземпляра, особенно из 'int'? Почему бы просто не пройти «int»? – Avi

+0

Я перехожу из HistoryViewController в InformationViewController. Извините, я не понял ваш второй вопрос. –

ответ

0

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

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