tableview中的PushViewController

时间:2012-11-07 13:41:21

标签: ios uitableview uinavigationcontroller uitabbarcontroller

在我的应用程序中我的根视图控制器是TabBar 在TabBar控制器之一i使用表格视图我想在按到单元格时推送视图控制器 但是当我使用

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
  TripDetailView * TripDetailViewObjec = [[TripDetailView alloc]init];
    [self.navigationController pushViewController:TripDetailViewObjec animated:YES];
}

没有做任何事情,因为Self.navigation=null

我尝试在AppDelegate中创建UINavigationController

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    AppDelegate * ApplicationDelegate =[[UIApplication sharedApplication]delegate];
        [[ApplicationDelegate Nav] pushViewController:TripDetailViewObjec animated:YES];
}

我的AppDelegate

@interface AppDelegate : UIResponder <UIApplicationDelegate>
{
    WeekendTrips * WeekendTripsObject ; 
    UINavigationController * Nav;
}

@property (strong, nonatomic) UIWindow *window;
@property (strong,nonatomic)   UINavigationController * Nav;
@end

@implementation AppDelegate
@synthesize Nav;

@synthesize window = _window;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.
WeekendTripsObject = [[WeekendTrips alloc]init];

    Nav=[[UINavigationController alloc]initWithRootViewController:WeekendTripsObject];
   [self.view addSubView Nav.view];
    return YES;
}

这并不起作用 我可以做什么 ? 在此先感谢

2 个答案:

答案 0 :(得分:1)

您需要在appdelegate中创建UINavigationController的实例。 您需要在标签栏控制器中的视图中添加导航栏。

如果xib中有标签栏,请将UINavigationController对象从“库”窗口拖到标签栏的“树视图”中。将导航控制器放在标签栏控制器内,然后将现有视图控制器拖动到导航控制器内。

如果以编程方式创建tabbar,则非常简单:

喜欢:

UIViewController *viewController1 = [[UIViewController alloc] initWithNibName:@"yournib1" bundle:nil];
UINavigationController *navigationcontroller = [[UINavigationController alloc] initWithRootViewController:viewController1];

UIViewController *viewController2 = [[UIViewController alloc] initWithNibName:@"yournib2" bundle:nil];

self.tabBarController = [[UITabBarController alloc] init];
self.tabBarController.viewControllers = [NSArray arrayWithObjects:navigationcontroller, viewController2, nil];

请参阅此tutorial

答案 1 :(得分:0)

您需要使用 UINaviatigationController作为应用程序根视图控制器,然后添加第一个表视图作为导航控制器的导航根视图。然后,您可以使用[self.navigationController pushViewController:animated:]推送其他表格视图。