2015-10-06 2 views
0

В моем MasterViewControlleruitabelview сделал выбор метода изменения вида DetailedViewController.В контроллере с раздельным представлением: вызов метода подробного просмотра контроллера из главного контроллера представления

Моя проблема в том, когда я меняю вид в DetailedViewController, необходимо сохранить значения текстового поля, если пользователь не сохранил вручную.

Как я могу проверить это с MasterViewController или любая идея, чтобы обнаружить главный вид, выбрали метод, вызванный от DetailedViewController.

благодарит заранее.

+0

я думаю, вы должны реализовать [протокол] (https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/WorkingwithProtocols/WorkingwithProtocols .html). – Mahesh

+0

Можете ли вы дать какой-то код. – chimbu

+0

вы хотите вызвать метод 'Подробный_контроллер' из' didSelectRowAtIndexPath' 'MasterViewController', правильно? – Mahesh

ответ

1

в вашем MasterViewController.h

@protocol CellSelectionDelegate <NSObject> 

    -(void)rowSelected:(NSIndexPath *)indexPath; 
@end 


@interface MasterViewController : UIViewController <UITableViewDataSource,UITableViewDelegate> 
{ 
} 
@property(nonatomic,strong)IBOutlet UITableView *menuTable; 
@property (nonatomic, weak) id<CellSelectionDelegate> cellDelegate; 

@end 

в вашем MasterViewController.m

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if([self.cellDelegate respondsToSelector:@selector(rowSelected:)]) 
    { 
     //sending selected indexPath, you can use indexPath.row in your detail view 
     [self.cellDelegate rowSelected:indexPath]; 
    } 

} 

Сейчас в вашей DetailedViewController.h

#import "MasterViewController.h" 
@interface DetailedViewController : UIViewController<CellSelectionDelegate> 
{ 

} 
@property(nonatomic,strong)MasterViewController *masterView; 
@end 

в DetailedViewController.m

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    //Set master page as the delegate. 
    masterView.delegate = self; 

} 

объявляет следующий метод делегата

-(void)rowSelected:(NSIndexPath *)indexPath 
{ 
    NSLog(@"Your selected Row : %d",indexPath.row); 
    //do your work according to selection made in master view. use indexpath.row to identify which option was selected, you can also pass the other data with rowselected: method 
} 
+0

не может найти объявление протокола для CellSelectionDelegate.unable для реализации протокола. – chimbu

+0

Я знаю, что это старо, но я просто столкнулся с этой проблемой и обнаружил, что у меня есть круговая зависимость в моем основном и детальном импорте (т. Е. Они импортировали заголовки друг друга). Это позволило делегату правильно работать – Chris

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