我正在使用viewBased应用程序做一本书。 mainView充当用于加载页面的backgroundView。每个页面都是不同的视图,并有自己的笔尖。当我在页面上滑动时(实际上在加载了当前视图/页面的mainView上),该页面将被删除,并且将添加下一页/上一页。
[currentPage.view removeFromSuperview];
[self.view insertSubview:nextPage.view atIndex:0];
我在这个mainView中添加了一个带有按钮的popoverController。它初始化了一个名为popClass的tableviewController类。 PopClass是另一个UITableViewController类,它将充当popViewController的父级。
self.myPopController = [[PopController alloc] initWithStyle:UITableViewStylePlain];
self.myPopOverController = [[UIPopoverController alloc] initWithContentViewController:myPopController];
当我在popover中选择某一行时,我希望backgroundview(mainView)加载对应于行号的页面。
为此,我在bookView(mainView)Controller类中编写了一个函数。当我选择某一行时,它会从popOver的父类调用它。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSInteger toPageNumber = indexPath.row + 1;
[viewController changeToPage:toPageNumber];
}
函数和代码行正在执行但没有任何事情发生。即使是日志行也会被打印,但不会发生任何动作。删除页面并添加另一个在浏览视图/页面时成功运行的页面时,代码相同。
有什么问题? OR还有其他方法可以使用popover在mainView中进行视图更改吗?
答案 0 :(得分:4)
您需要在弹出控制器中引用后台视图控制器。
在PopController
控制器中,你应该有一个像:
@interface PopController: UITablViewController{
//// other varibales;
id delegate;
}
@property (nonatomic, retain) id delgate;
现在来自您展示popovercontroller的类
你应该添加这一行:
[myPopController setDelegate:self];
然后您可以轻松访问主视图控制器类的任何方法。使用
[delegate callTheRequiredMethod];
希望这有帮助。
谢谢,
Madhup
答案 1 :(得分:1)
如果不查看代码,很难说出现了什么问题。那就是说,这就是我要做的事情:
(1)在mainView
中选择行后,以popoverController
模式显示:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
PopoverViewController *vc = [[PopoverViewController alloc] init];
[self.navigationController presentModalViewController:vc animated:YES];
[vc release];
}
(2)当popoverController
中的某些内容发生变化时,例如选择了一行,请在parentViewController
中设置一个值(应为MainView
}):
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
self.parentViewController.value = someValue;
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
(3)通过致电:
取消您选择的popoverController
[self dismissModalViewControllerAnimated:YES]`