我正在重做我的应用程序的用户界面以使用表格视图和标签栏控制器来分解数据量以输入 4 个逻辑部分,而不是 UITextFields 和开关的一个长滚动屏幕。
以前我会使用 prepareForSegue 中的以下代码将新的托管对象传递给新的视图控制器:
if ([[segue identifier ] isEqualToString:@"addDiveSite"]) {
//
UINavigationController *navController = segue.destinationViewController;
AddEditDiveSiteViewController *adsvc = (AddEditDiveSiteViewController *) navController.topViewController;
adsvc.navigationItem.title=@"Add Site";
视图控制器嵌入在导航控制器中,我通过询问 topviewcontroller 来获取它 - 因为只有一个屏幕。
现在有了标签栏控制器,我有 4 个屏幕可以输入数据。
我知道我可以替代:
if ([[segue identifier] isEqualToString:@"addDiveSite"]){
UITabBarController *tabController =segue.destinationViewController ;
AddEditDiveSiteViewController *adsvc =(AddEditDiveSiteViewController *)[[tabController customizableViewControllers] objectAtIndex:0];
DiveSite *newDiveSite =(DiveSite*) [NSEntityDescription insertNewObjectForEntityForName:@"DiveSite" inManagedObjectContext:[self managedObjectContext]];
adsvc.currentSite = newDiveSite;
但这只会让我将数据传递给 4 个选项卡之一上的属性,我需要在所有 4 个选项卡上都可以访问它。
正确的方法是有 4 种变体:
AddEditDiveSiteViewController *adsvc =(AddEditDiveSiteViewController *)[[tabController customizableViewControllers] objectAtIndex:0];
索引处的 4 个选项卡/对象中的每一个都有一个?
或者我应该看子类化 UITabBarController 并给它一个属性来传递数据,如果是这样,从“父”UITabBarController 获取属性的格式是什么?
还是有完全不同的方法?
感谢您花时间阅读和/或回复此内容
编辑
最后采用了以下似乎工作正常的方法
对于视图 2,3 和 4,我抓取它们所在的 UITabBarController 并获取其控制器数组。然后我得到数组中的第一项并创建一个指向我需要访问的属性的指针。
当你知道要寻找什么时。
希望这可以帮助那里的人