0

我正在为 iPad 开发应用程序。我能够在 VIEW1 中显示带有 tableView 的 UIPopoverController 和一些列表。

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

换句话说,

  1. VIEW1 包含一个按钮 1。

  2. 当用户按下按钮 1 时,弹出框显示在 VIEW1 上。

  3. 在弹出窗口中,有一个包含一些行的表。(视图1)

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

谢谢你的帮助。

4

4 回答 4

1

在 tableview 委托方法 didSelectRowAtIndexPath 中,您可以按如下方式调用方法:

1.在初始化popover控制器时定义target和selector如下:[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.然后didSelectRowAtIndexPath你可以调用yourMethod如下:

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

如果表视图在同一个视图中,那么您可以在 didSelectRowAtIndexPath 中调用 yourMethod。

于 2012-08-06T09:24:26.663 回答
0

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

[self presentViewController:view2controller animated:YES completion:nil];
于 2012-08-06T09:19:52.757 回答
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.
于 2012-08-06T12:26:49.230 回答
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];
于 2012-08-06T10:20:29.020 回答