我希望能够在父视图中的 UITableView 和标准 UIView 之间切换。基本上我有一个 UITableView 显示加载显示信息日志。我想在窗口的标题中有一个段控件,当用户点击时,它会转换到一个标准 UIView 的图形视图。
有问题的 UIViewController 需要能够从 RootViewController 堆栈中推送。
我已经尝试了很多事情,但我似乎无法让它发挥作用。有没有人有关于如何做到这一点的任何代码示例或建议?
我希望能够在父视图中的 UITableView 和标准 UIView 之间切换。基本上我有一个 UITableView 显示加载显示信息日志。我想在窗口的标题中有一个段控件,当用户点击时,它会转换到一个标准 UIView 的图形视图。
有问题的 UIViewController 需要能够从 RootViewController 堆栈中推送。
我已经尝试了很多事情,但我似乎无法让它发挥作用。有没有人有关于如何做到这一点的任何代码示例或建议?
听起来您应该有一个包含段控件和子视图空间的父视图。当用户选择一个段时,您可以将相关视图(表格或图形)添加为视图的子视图,并设置其矩形以使其占据子区域。
-----------
| Segment |
-----------
| |
| |
| Child |
| |
-----------
您根本不需要更改 UIViewController 即可在导航控制器中显示它。您的分段控制器应调用执行以下代码的方法:
UIViewController *myViewController = [[UIViewController alloc] init];
[self.navigationController pushViewController:myViewController animated:YES];
[myViewController release];
我没有指向示例的链接,但如有必要,我可以回答更多问题。
-画
它实际上并不像最初看起来那么困难。基本上,如果您有一个带有空白视图的 ParentViewController 和顶部的 NavController。将段控件放置在 NavController 的中心视图中。
然后,您只需在段控制更改时切换 ViewController 视图。您唯一需要做的就是保留指向当前视图的指针并在将新视图添加到 parentVC 之前将其删除。下面的代码:
- (void)showView
{
if (_currentView != nil)
[_currentView removeFromSuperview];
if (segmentControl.selectedSegmentIndex == 0)
{
if (_graph == nil)
_graph = [[DrawGraphViewController alloc] initWithNibName:@"DrawGraphViewController" bundle:[NSBundle mainBundle]];
self.navigationItem.rightBarButtonItem = nil;
_currentView = _graph.view;
[contentView addSubview:_graph.view];
[_graph reloadGraph];
}
else if (segmentControl.selectedSegmentIndex == 1)
{
if (_log == nil)
_log = [[LogTableViewController alloc] initWithNibName:@"LogTableView" bundle:[NSBundle mainBundle]];
self.navigationItem.rightBarButtonItem = self.editButtonItem;
_currentView = _log.view;
[contentView addSubview:_log.view];
[_log loadData];
}
else {
if (_export == nil)
_export = [[ExportViewController alloc] initWithNibName:@"ExportView" bundle:[NSBundle mainBundle]];
_currentView = _export.view;
[contentView addSubview:_export.view];
}
}