Проблема при вставке контроллера вида в навигационный контроллер - PullRequest
0 голосов
/ 20 сентября 2011

Мне нужна помощь. В своем приложении Iphone я сделал что-то вроде этого: http://i56.tinypic.com/10zn43p.png ,

Когда выбрано Расстояние, мне нужно показать другой вид, подобный этому: http://i51.tinypic.com/vzga6h.png

Вот как я это сделал:

в заголовочном файле

@interface RecherchePartenaireViewController : UIViewController <UINavigationControllerDelegate>
{
    UINavigationController *navigationController;
    UITableView *tableViewRecherchePartenaire;
    RecherchePartenaireTypePartenaireViewController *recherchePartenaireTypePartenaireViewController;
    RecherchePartenaireDistanceViewController *recherchePartenaireDistanceViewController;
}
@property (nonatomic, retain) IBOutlet UINavigationController *navigationController;
@property (nonatomic, retain) IBOutlet UITableView *tableViewRecherchePartenaire;
@property (nonatomic, retain) IBOutlet  RecherchePartenaireTypePartenaireViewController *recherchePartenaireTypePartenaireViewController;
@property (nonatomic, retain) IBOutlet RecherchePartenaireDistanceViewController *recherchePartenaireDistanceViewController;

@end

в файле реализации

- (void)viewDidLoad
{

    listData = [[NSMutableArray alloc] initWithObjects:@"Type de Partenaire", @"Code postal", @"Ville",@"Distance",@"Nom du Partenaire",@"Audi R8 uniquement",nil];
    NSLog(@"hey %@",listData);
    tableViewRecherchePartenaire.backgroundColor = [UIColor clearColor];   
    navigationController=[[UINavigationController alloc] init];

    CGRect newRect = navigationController.view.frame;
    newRect.size.height -= [UIScreen mainScreen].applicationFrame.origin.y;
    [navigationController.view setFrame:newRect];
    [navigationController setNavigationBarHidden:YES];
    [super viewDidLoad];
}

Когда выбрана третья строка таблицы, я делаю это:

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        if (indexPath.row==3){
            NSLog(@"RecherchePartenaireDistanceViewController..."); 
            recherchePartenaireDistanceViewController = [[RecherchePartenaireDistanceViewController alloc]  init];
          recherchePartenaireDistanceViewController.recherchePartenaireViewController=self;

            [self.navigationController pushViewController:recherchePartenaireDistanceViewController animated:YES];

        }

    }

Пожалуйста, скажите мне, где я иду не так, потому что это, кажется, не работает. Спасибо.

Ответы [ 2 ]

0 голосов
/ 20 сентября 2011

Переход от комментариев сюда.

Вы должны добавить навигационный контроллер в ваше корневое представление, иначе вы не сможете вызвать метод pushViewConroller:.

Например, вы можете создать корневой контроллер вида таким образом:

RootViewController *controller = [[RootViewController alloc] init];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:controller];
[controller release];

Вы можете нажать контроллер навигации, например, таким образом:

[self presentModalViewController:navController animated:YES];
0 голосов
/ 20 сентября 2011

Подход должен состоять в том, чтобы иметь объект navigationController с первым tableView в качестве его rootViewController. На didSelectRowAtIndexPath: метод продолжить, как вы делаете прямо сейчас. Это подтолкнет detailViewController. А в вашем rootViewController скрыть панель навигации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...