如何更改主视图是基于导航的应用程序!

时间:2011-07-04 12:00:20

标签: iphone xcode cocoa-touch

我是编程新手,我的问题是这个。

我有一个基于导航的应用程序,可在应用程序启动时显示表中SQLite数据库的数据。我希望有一个不同的主视图,并在用户按下选项卡菜单上的按钮时显示数据表。

我一直无法找到任何关于如何实现这一目标的信息或最好是教程。任何人都可以指出我正确的方向。

感谢。

2 个答案:

答案 0 :(得分:2)

  1. 创建需要显示的类。假设您创建了名为LoginView的类。

  2. 创建基于导航的应用程序时,AppDelegate类包含以下代码:

    // Add the navigation controller's view to the window and display.
    [window addSubview:navigationController.view];
    [window makeKeyAndVisible];
    
  3. 在步骤2中提到的代码上方添加以下行:

    LoginView *logView = [[LoginView alloc] initWithNibName:@"LoginView" bundle:nil];
    [self.navigationController pushViewController:(UIViewController *)logView animated:YES]; 
    
  4. AppDelegate课程中添加以下或类似的功能。这将隐藏LoginView视图并显示rootView控制器类。

    -(void) LoginSuccess
    {
        // Add the navigation controller's view to the window and display.
    
        [self.navigationController popViewControllerAnimated:YES];
    
        RootViewController *rootView = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil];
        [self.navigationController pushViewController:(UIViewController *)rootView animated:YES];
    
        [window addSubview:navigationController.view];
        [window makeKeyAndVisible];
    }
    
  5. LoginView类中添加一个类似于下面提到的函数的函数。调用步骤4中提到的功能,如下所示:

    -(IBAction) OpenNavigation
    {
        TestNavgAppDelegate *pApp = [[UIApplication sharedApplication] delegate];
        [pApp LoginSuccess];
    }
    
  6. RootView控制器viewDidLoad方法中添加以下代码,以便在需要时隐藏后退按钮:

    [super viewDidLoad];
    
    self.navigationItem.backBarButtonItem = NULL;
    self.navigationItem.hidesBackButton = YES;
    
  7. 一切顺利。

答案 1 :(得分:1)

您只需从基于Naviagtion的应用程序切换到基于Tabbar的应用程序。

步骤1]使用UITabbarController打开MainWindow.xib和Replace navigationcontroller 第2步]在应用程序委托中替换变量

UINavigationController *navController;

UITabBarController* tabBarController;

@interface ViewTestAppDelegate : NSObject <UIApplicationDelegate> {
    UIWindow *window;
    UINavigationController *navController;
}

@property (nonatomic, retain) IBOutlet UINavigationController *navController;
@property (nonatomic, retain) IBOutlet UIWindow *window;

@interface ViewTestAppDelegate : NSObject <UIApplicationDelegate> {
    UIWindow *window;
    UITabBarController* tabBarController;
}

@property (nonatomic, retain) IBOutlet UITabBarController *tabBarController;
@property (nonatomic, retain) IBOutlet UIWindow *window;

并相应地在属性和.m文件中更新相同的内容

替换代码

[self.window addSubview:navController.view];

  [self.window addSubview:tabBarController.view];
<{1>}中的

方法

我们所做的全部用导航控制器替换了导航控制器。 enter image description here

enter image description here

连接相应的插座后,您需要做的就是将所需的视图控制器(您可以重复使用之前使用的视图来显示来自Sqlite数据库的数据)作为TabbarController的选定视图控制器,这将是第一个视图加载了tableview。

这一切看起来如下。 enter image description here