У меня есть UIViewController
, который соответствует нескольким делегатам - показано ниже:
@interface SpotController : UIViewController <UITabBarDelegate, UITableViewDelegate, UITableViewDataSource, MKMapViewDelegate, UIActionSheetDelegate, UINavigationControllerDelegate>
По какой-то причине часть NavigationControllerDelegate
не работает.Я не уверен, что я делаю неправильно.В основном я пытаюсь нажать на новый ViewController
, когда строка tableView выбран.У меня есть следующий код:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSIndexPath *selectedIndexPath = [tableView_ indexPathForSelectedRow];
// do some stuff here to prep/set stuff on the destination VC
DetailsVC *detailsVC = [self.storyboard instantiateViewControllerWithIdentifier:@"detailsVC"];
[self.navigationController pushViewController:detailsVC animated:YES];
}
Итак, как я уже сказал, pushViewController
не работает, то есть я не отправляюсь на целевой VC.Я просто не пойду никуда.
Примечание: этот точный код работал отлично, если я вставлял ViewController в NavigationController
(IE Выберите VC в StoryBoard, затем Editor | Embed In | Navigation Controller). но я не хочу делать это таким образом .
Я также попытался создать @property
типа UINavigationController
, а затем распределить-инициализировать его в viewDidLoad.Я попробовал оба варианта init
и initWithRootViewController:self
этого метода, но ни один из них не работал.Не уверен, что я вообще все делаю правильно.
Возможно, мне нужно явно указать @property
в качестве делегата?Не знаю, как это сделать, я пытался сделать следующее:
@synthesize navController = navController_;
- (void)viewDidLoad
{
[super viewDidLoad];
navController_ = [[UINavigationController alloc] init]; // initWithRootViewController:self];
[navController_ setDelegate:self];
}
Но все равно ничего.
PS - я использую Xcode 4.3 с ARC и раскадровкой.