【问题标题】:Navigation Controller in popover弹出窗口中的导航控制器
【发布时间】:2011-07-07 04:21:32
【问题描述】:

我是 ipad 应用开发的新手。

我有兴趣创建一个应用程序,在该应用程序中我有一个弹出窗口,其中显示一个带有项目列表的表格视图。然后我选择一个项目,视图钻到另一个 tableview,其中包含另一个项目列表和一个导航返回按钮。

我要向下钻取的级别是动态的。

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

【问题讨论】:

  • 正是我想要的! :)

标签: ipad uitableview dynamic uipopovercontroller


【解决方案1】:

我以前做过,效果很好! 只需将此函数分配给您的按钮(可能是 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];
}

现在您也可以将 UITableView 添加到 SecondViewController。并将此方案用于其他表!

我希望它对你有用!

【讨论】:

    【解决方案2】:

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

    我还想补充一点,您应该熟悉 Objective-C 和 iOS 开发。不要在不了解您实际在做什么的情况下尝试盲目地使用您在网上找到的东西:)

    【讨论】:

    • 您好,感谢您的早期回复。如果它对我有用,我会继续努力并更新。 :)
    【解决方案3】:
    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)为避免导航时弹出框大小的变化,在两个视图控制器(即 PopOverContentViewController1 和 PopOverContentViewController2)的 viewDidLoad 中编写以下代码

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-20
      • 1970-01-01
      • 1970-01-01
      • 2012-09-18
      • 2013-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多