Я хочу, чтобы иметь возможность нажимать контроллеры представлений на мой основной подклассифицированный контроллер навигации из моего пользовательского меню, и я хочу сделать это с помощью делегата. Прежде чем я попытаюсь изменить контроллеры представлений, я пошел на что-то проще, чтобы изменить текущий заголовок контроллера. Это код, который я написал до сих пор, но запись на ячейку TableView не вызовет делегата. (Или так кажется)Создание делегата для изменения представлений из меню
Пожалуйста посоветуйте
-> RootViewController / \ Container Container | | SlideMenuViewController SubClassed UINavigationController | | | | | UITableViewController VC1 VC2 VC3 VC4
SlideMenuViewController.h:
@protocol SlidingMenuDelegate <NSObject>
@end
@interface SlideMenuViewController : UIViewController
{
id <SlidingMenuDelegate> delegate;
}
@property (strong, nonatomic) id delegate;
SlideMenuViewController.m:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
//do something to send controller
((UIRTLNavigationController *)(self.delegate)).titleForView.text = @"test";
}
MyNavigationController.h:
@interface MyNavigationController : UINavigationController <UINavigationControllerDelegate>
@property (nonatomic, strong) UILabel *titleForView;
MyNavigationController.m:
- (void)showRightMenu
{
...
...
//Some animation to slide the menu out
//Delegate stuff
//Get the storyboard's instance.
UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:[NSBundle mainBundle]];
SlideMenuViewController *slideMenuVC;
//Get the viewcontrollers instance from the storyboard's instance
slideMenuVC = [storyBoard instantiateViewControllerWithIdentifier:@"slideMenuSID"];
slideMenuVC.delegate = self;
}
Где находится делегат? Почему в протоколе нет определений методов? Свойства делегата обычно не должны быть «сильными». Отладка или добавление некоторого кода регистрации, чтобы увидеть, что это происходит, когда ячейка таблицы выбрана. – Wain