UIPopoverController&导航到UIViewController?

时间:2012-08-06 08:59:45

标签: iphone xcode uiviewcontroller uipopovercontroller uipopover

我正在为iPad开发应用程序。我能够使用tableView显示UIPopoverController,并在VIEW1中显示一些列表。

当用户从表中选择一行时,我想从VIEW1导航到VIEW2。

换句话说,

  1. VIEW1包含一个button1。

  2. 当用户按下button1时,弹出窗口显示在VIEW1上。

  3. 在popover中,有一个包含一些行的表。 (VIEW1)

  4. 当用户选择一行时,它应该调用VIEW2,即从VIEW1导航到VIEW2。

  5. 感谢您的帮助。

4 个答案:

答案 0 :(得分:1)

在tableview委托方法didSelectRowAtIndexPath中你可以调用方法如下:

1.初始化popover控制器定义目标和选择器,如下所示:  [theController setTarget:self andSelector:@selector(yourMethod :)];

2.在包含tableview的视图控制器中,您可以按如下方式定义setTarget方法:

-(void)setTarget:(id)inTarget andSelector:(SEL)inSelector {
    mTarget = inTarget;
    m_Selector = inSelector;
}

其中mTarget是id类型,mSelector是选择器。

3.然后选择了RowRowAtIndexPath,您可以按如下方式调用yourMethod:

if ([m_Target respondsToSelector:m_Selector]) {
        [m_Target performSelector:m_Selector withObject:nil];
    }

如果表视图在同一视图中,则可以在didSelectRowAtIndexPath中调用yourMethod。

答案 1 :(得分:0)

在表视图控制器文件中,您将要使用didSelectRowAtIndexPath方法来呈现view2,例如:

[self presentViewController:view2controller animated:YES completion:nil];

答案 2 :(得分:0)

我找到了答案。只需将UITableViewController添加到UIPopOverController即可从VIEW1导航到VIEW2。

感谢您的努力。以下是代码。

        tableViewController = [[UITableViewController alloc]initWithStyle:UITableViewStylePlain];
        tableViewController.tableView = tblView;
        tableViewController.tableView.delegate = self;
        tableViewController.tableView.dataSource = self;
        UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:tableViewController];
        self.popoverController = popover;
        popoverController.delegate = self;

        [popoverController setPopoverContentSize:CGSizeMake(442.0f, 527.0f)];
        [popoverController presentPopoverFromRect:CGRectMake(bkBtn.frame.origin.x+bkBtn.frame.size.width/2, bkBtn.frame.origin.y, 442.0f, 527.0f) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES];

        [tableViewController.tableView reloadData];

答案 3 :(得分:0)

 - (UITableViewCell *)tableView:(UITableView *)tableView 
         cellForRowAtIndexPath:(NSIndexPath *)indexPath {
VIEW2 *view2=[[VIEW2 alloc]initWithName:@"VIEW2" bundle:[NSBundle mainBundle]];
[self.navigationController pushViewController:view2 animated:YES];
[view2 release];
}
just try it.This will help you.