我正在为 iPad 开发应用程序。我能够在 VIEW1 中显示带有 tableView 的 UIPopoverController 和一些列表。
当用户从表中选择一行时,我想从 VIEW1 导航到 VIEW2。
换句话说,
VIEW1 包含一个按钮 1。
当用户按下按钮 1 时,弹出框显示在 VIEW1 上。
在弹出窗口中,有一个包含一些行的表。(视图1)
当用户选择一行时,它应该调用 VIEW2,即从 VIEW1 导航到 VIEW2。
谢谢你的帮助。
我正在为 iPad 开发应用程序。我能够在 VIEW1 中显示带有 tableView 的 UIPopoverController 和一些列表。
当用户从表中选择一行时,我想从 VIEW1 导航到 VIEW2。
换句话说,
VIEW1 包含一个按钮 1。
当用户按下按钮 1 时,弹出框显示在 VIEW1 上。
在弹出窗口中,有一个包含一些行的表。(视图1)
当用户选择一行时,它应该调用 VIEW2,即从 VIEW1 导航到 VIEW2。
谢谢你的帮助。
在 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。
在表视图控制器文件中,您将要使用该didSelectRowAtIndexPath
方法来呈现 view2,例如:
[self presentViewController:view2controller animated:YES completion:nil];
- (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.
我找到了答案。只需将 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];