弹出窗口中的导航控制器

时间:2011-03-02 10:41:36

标签: ipad uitableview dynamic uipopovercontroller

我是ipad应用程序开发的新手。

我有兴趣创建一个应用程序,其中有一个popover显示带有项目列表的tableview。然后我选择一个项目,视图钻到另一个包含另一个项目列表的桌面视图和一个导航后退按钮。

我将深入挖掘的水平是动态的。

请指导我提供适当的资源以帮助我解决问题。

3 个答案:

答案 0 :(得分:5)

我以前做过,效果很好! 只需将此功能分配给您的按钮(可能是UIBarButtonItem):

UIPopoverController *popover;
bool isPopoverOpen = false;
-(void)openPopover{
    if(!isPopoverOpen){
        FirstViewController *firstViewCtrl = [[PartsViewCtrl alloc] init];
        UINavigationController *navbar = [[UINavigationController alloc] initWithRootViewController:firstViewCtrl];
        [firstViewCtrl release];
        navbar.contentSizeForViewInPopover = CGSizeMake(TABLE_WIDTH, TABLE_HEIGHT);
        popover = [[UIPopoverController alloc] initWithContentViewController:navbar];
        [navbar release];
        popover.delegate = self;
        popover.popoverContentSize = CGSizeMake(TABLE_WIDTH, TABLE_HEIGHT);
        [popoverOnPartsView presentPopoverFromBarButtonItem:barButtonItem permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
        isPopoverOpen = true;
    }else{
        [popover dismissPopoverAnimated:YES];
        [popover release];
        isPopoverOpen = false;
    }
}

并将此函数实现到具有UITableView:

的FirstViewController
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    SecondViewController *secondViewController = [[SecondViewController alloc] init];
    [self.navigationController pushViewController:secondViewController animated:YES];
    [secondViewController release];
}

现在你可以向SecondViewController添加一个UITableView。并将此场景用于其他表格!

我希望它适合你!

答案 1 :(得分:4)

创建弹出窗口时,您只需要分配UINavigationController并使用它来管理弹出窗口中的视图层次结构。快速网络搜索显示this tutorial,其中涵盖了您需要了解的内容。

我还想补充一点,你应该通过Objective-C和iOS开发来加快速度。不要试图盲目地使用你在网上发现的东西而不了解你实际在做什么:)

答案 2 :(得分:2)

Do the following steps 

1)在按钮的操作中(通过点击该按钮弹出应该出现)编写代码

[这里PopOverContentViewController是一个viewController,我有表格视图和多个项目列表,当弹出到达时应该显示这些项目

 - (IBAction)callPopOver:(id)sender 
  {


    UIButton *button = (UIButton*)sender;
    PopOverContentViewController1 *popOverContent = [[PopOverContentViewController1     alloc]initWithNibName:@"PopOverContentViewController1" bundle:nil];

    UINavigationController *navbar = [[UINavigationController alloc]  initWithRootViewController:popOverContent];

    navbar.contentSizeForViewInPopover = CGSizeMake(266, 200);
    popover = [[UIPopoverController alloc] initWithContentViewController:navbar];
    popover.delegate = self;
    [popover presentPopoverFromRect:CGRectMake(button.frame.size.width / 2,   button.frame.size.height / 1, 1, 1) inView:button   permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
    [popover setPopoverContentSize:CGSizeMake(266, 200) animated:YES]; 
    [popUpContent release];


    }      

2)现在要在点击任何行时更改表视图,在PopOverViewController.m中键入此代码

[这里PopOverViewController2是我们有下一个要显示的表视图的ViewController]

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

3)在导航中在两个视图控制器的viewDidLoad中编写以下代码(即PopOverContentViewController1和PopOverContentViewController2)时,避免弹出窗口大小的改变

 - (void)viewDidLoad
 {
  [super viewDidLoad];
  [self setContentSizeForViewInPopover:CGSizeMake(266, 200)];
 }