管理导航控制器/视图控制器

时间:2012-10-25 06:33:44

标签: objective-c ios xcode

不确定如何标题这个问题,但我遇到了这样一个问题:到目前为止,我的应用主要在一个带有表视图的导航控制器中运行。但现在我正在尝试集成下拉设置菜单,并且无法正确完成它。

我现在的方式,它的工作原理

从一个按钮调用changeController。 ChangeController在appdelegate。

- (void) ChangeController
{
    self.window.backgroundColor = [UIColor blackColor];
    DropDownExample *e = [[DropDownExample alloc] initWithStyle:UITableViewStyleGrouped];
    self.navigationController = [[UINavigationController alloc] initWithRootViewController:e];
    [e release];
    [self.window addSubview:self.navigationController.view];
    self.window.backgroundColor = [UIColor blackColor];
    [self.window makeKeyAndVisible];
}

但是这种方法有所不同 - 如果按下按钮没有转换,设置菜单会立即显示,你不能通过上面的导航栏返回(没有任何内容)。

那么如何正确地做到这一点?我是ios的新手,所以请告诉我如何做到这一点。

来自appdelegate的Didfinishlaunchingwithoptions方法

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {

        self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease

];
    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];

    TableViewController *tableVC = [[TableViewController alloc] initWithNibName:@"TableView" bundle:nil andType:CONTROLLER_TYPE_FIRST];
    UINavigationController *navC = [[UINavigationController alloc] initWithRootViewController:tableVC];
    self.navigationController = navC;
    [tableVC release];
    [navC release];
     self.window.rootViewController = _navigationController;
    [self.window makeKeyAndVisible];

    return YES;
}

1 个答案:

答案 0 :(得分:3)

好的,这是答案。将方法changeController写入调用changeController

的Button所在的同一个类中

在方法中,写下这个。

- (void) ChangeController
{
    DropDownExample *e = [[DropDownExample alloc] initWithStyle:UITableViewStyleGrouped];
    [self.navigationController pushViewController:e animated:YES];
    [e release];
}

你想要的是在当前Stack的顶部插入新的UIViewController。如果你默认在顶部有一个导航栏,那么默认会有一个后退Btn,它会弹出那个控制器。