Перейти из ячейки UITableView в подробный вид - PullRequest
1 голос
/ 19 февраля 2012

Я много искал по этой теме и не могу заставить этот код работать.Когда я выполняю его, он показывает только мой тестовый NSLog, но код для перехода из одного представления в другое ничего не делает.Здесь у вас есть следующий код:

// FirstViewController.h

#import <UIKit/UIKit.h>
#import "StationDetailsViewController.h"


@interface FirstViewController : UIViewController{
  NSArray *ListaEstaciones;
  NSArray *ListaID;
}
@property (nonatomic, retain) NSArray *ListaEstaciones;
@property (nonatomic, retain) NSArray *ListaID;
@end

// FirstViewController.m

#import "FirstViewController.h"
#import "StationDetailsViewController.h"
@implementation FirstViewController
@synthesize ListaEstaciones;
@synthesize ListaID;

//...

- (void)tableView: (UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
NSLog(@"Pushing...");
StationDetailsViewController *controller = [[StationDetailsViewController alloc] initWithNibName:@"StationDetailsViewController" bundle:nil];
[[self navigationController] pushViewController:controller animated:YES];
[controller release], controller = nil; 
}

@end

Я перепробовал много учебников и мою книгуно я не знаю, что не так.Большое спасибо, ребята.

РЕДАКТИРОВАТЬ: Читая ваши ответы, я обнаружил, что ошибка на AppDelegate.m, где определен rootViewController.

// AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    UIViewController *viewController1 = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];
    UIViewController *viewController2 = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
    UIViewController *viewController3 = [[ThirdViewController alloc] initWithNibName:@"ThirdViewController" bundle:nil];
    self.tabBarController = [[UITabBarController alloc] init];
    self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, viewController2, viewController3, nil];
    self.window.rootViewController = self.tabBarController;
    [self.window makeKeyAndVisible];

    return YES;
}

Я не знаю, что здесь редактировать, чтобы сделать это: [[self navigationController] pushViewController: controller animated: YES];работать правильно.

Ответы [ 2 ]

0 голосов
/ 19 февраля 2012

Я думаю, что проблема в [self navigationController] .. поставьте точку останова в этой строке кода и, вероятно, вы найдете ее значение = nil Потому что выне имея вашего детального контроллера .. вы могли бы решить это следующим образом UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:yourMainViewControllerInstance];

Это приложение Заявление Код:

self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// Override point for customization after application launch.
UIViewController *firstViewController = [[[FirstViewController alloc] initWithNibName:@"FBConFirstViewController" bundle:nil] autorelease];
UIViewController *secondViewController = [[[SecondViewController alloc] initWithNibName:@"FBConSecondViewController" bundle:nil] autorelease];
self.tabBarController = [[[UITabBarController alloc] init] autorelease];
 UINavigationController *nav = [[[UINavigationController alloc] initWithRootViewController:firstViewController]autorelease];
self.tabBarController.viewControllers = [NSArray arrayWithObjects:nav, secondViewController, nil];
self.window.rootViewController = self.tabBarController;
[self.window makeKeyAndVisible];
0 голосов
/ 19 февраля 2012

Я полагаю, что есть какая-то проблема либо с настройками источника данных и делегата, либо с вашим контроллером навигации.

Проверьте этот учебник Учебник по UITableView

Это может быть полезно для вас.

Наслаждайтесь кодированием:)

...