2012-03-16 3 views
0

Я действительно пытаюсь отобразить новый контроллер типа UIViewController MKMapViewDelegate в функции didSelectRowAtIndexPath. У меня есть табличное представление в контроллере, и когда я нажимаю на ячейку этого табличного представления, я хочу отобразить новый контроллер типа UIViewController MKMapViewDelegate.Показать карту с функцией didSelectRowAtIndexPath

Мой код выглядит следующим образом:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath  *)indexPath 
{ 
// Navigation logic may go here. Create and push another view controller. 
UIViewController *mapviewtest=[[MapStation alloc]initWithNibName:@"MapStation" bundle:nil]; 
[self.navigationController pushViewController:mapviewtest animated:YES]; 

//Station *station = nil; 
//station = [self.listStation objectAtIndex:indexPath.row]; 
} 

Проблема, когда я нажимаю на любой ячейке Tableview программы бросить курить с точкой останова на линии:

UIViewController *mapviewtest=[[MapStation alloc]initWithNibName:@"MapStation" bundle:nil]; 

у меня нет знать, почему он это делает и как разрешить эту ошибку. Возможно, вы знаете другой способ сделать это (без использования функции pushviewController).

Жду ваших ответов ребята ;-)

С уважением

Квентин

+0

и Мапстейшен подкласс UIViewController? –

+0

Да MapStation является подразделением UIViewController. Я думаю, что это может произойти от моего navigationController. Я не создал его (потому что он создается при вызове контроллера, не так ли?) – Quentin91360

+0

navController не создан для вашего. Если у вас нет navController, ничего не происходит, когда вы пытаетесь нажать. Без падений. Если бы я должен был предположить, я бы сказал, что у вас есть ошибка в реализации 'initWithNibName: bundle:' или у вас есть объект в вашем xib, который подключен к несуществующей розетке в вашем .h-файле. Но я не в настроении угадывать. Проверьте вывод консоли. –

ответ

0

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

Внутри App делегата:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    // Create the Window 
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; 

    // Create RootViewController (i.e. Table View) 
    RootViewController *rootViewController = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil]; 

    // Create the Navigation Controller 
    UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:rootViewController]; 

    // Make the Navigation Controller the RootViewController 
    self.window.rootViewController = navigationController; 

    // Display the Window 
    [self.window makeKeyAndVisible]; 

    return YES; 
} 

Внутри RootViewController:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    // Create MapStation 
    MapStation *mapviewtest = [[MapStation alloc] initWithNibName:@"MapStation" bundle:nil]; 

    // Push MapStation on to the self.navigationController (i.e you in the RootViewController class right 
    // which is a navigation controller so this will work. 
    [self.navigationController pushViewController:mapviewtest animated:YES]; 

    // mapviewtest is retained by the navigationController so release it 
    [mapviewtest release]; 
} 
+0

Спасибо за ваш ответ!Проблема в том, что в моем appdelegate мой контроллер корневого представления - это панель вкладок, потому что я хочу сохранить его во время выполнения всей программы. Поэтому я запутался в управлении панелью вкладок и управлении контроллером навигации, который вы мне дали. – Quentin91360

-1

Вы .xib отсутствует имя XIb

UIViewController *mapviewtest=[[MapStation alloc]initWithNibName:@"MapStation.xib" bundle:nil]; 
+0

Я только что попробовал, и он не работает :-( – Quentin91360

+0

проверьте свой файл xib ... убедитесь, что его владелец файла установлен в класс MapStation – Shubhank

+0

Я просто проверил его. Владелец файла установлен в класс MapStation. не работает. – Quentin91360

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