回答
您可以为您的第一个视图控制器存储文本费尔德价值,只是在你的第二个视图控制器创建第一个视图控制器类的引用......然后你就可以访问变量
通过创建一个创建全局变量一个ivar可以引用一个特定的类型,比如标签或其他视图控制器,你可以把所有不需要耦合的东西结合在一起。你可以做的是让你的第一个标签视图控制器成为你的第二个标签视图控制器的代表。所以在你的应用代理中做这样的事情。
OptionsViewController *optionsViewController = // ... get this from the tab view
FirsTabViewController *firstTabViewController = // ... same here
[optionsViewController setDelegate:firsTabViewController];
,这意味着你需要在你的OptionsViewController伊娃:当你想要触发这种改变发生在你的选择浏览器,查看代理人是否可以应对任何事件
@property (assign) id delegate;
然后,一个你已经命名的选择器。例如:
- (void)someEventHappenedLikeTyping:(id)sender;
{
if ([delegate respondsToSelector:@selector(setOptionsString:)]
[delegate performSelector:@selector(setOptionsString:) withObject:[label text]];
}
请注意,您从未指定过任何特定的对象类型。你只需检查委托(是否声明为id)是否可以响应该选择器。如果可以的话,它会按照它所说的去做,否则就会保持沉默。
对于这个工作,你需要在你的FirstTabViewController的optionsString伊娃,所以它会在头被声明为:
@property (copy) NSString *optionsString;
,然后在.M @synthesize它。这会导致-setOptionsString成为将在-someEventHappenedLikeTyping方法中调用的有效选择器。无论如何,现在,如果你需要改变哪个视图控制器引用哪个,你不必进入头部并且改变引用的ivar的类型。您只需在作为选项视图控制器代表的视图控制器中实现选择器(顺便提一句,这称为非正式协议)。
只是一些思考的食物。希望有所帮助。在我添加的代码中可以做进一步的分离,但是对于这样一个简单的任务来说,这又可能是过度的。让我知道你是否需要澄清或者想通过进一步解耦来理解我的意思。
此致敬礼
p.s.有时需要在两个标签栏视图控制器之间共享数据,意味着您有设计缺陷。如果你想要存储的偏好从你的选择来看,你应该叫
[[NSUserDefaults standardUserDefaults] setObject:[label text] forKey:@"option1"];
[[NSUserDefaults standardUserDefaults] synchronize];
然后你可以从后面NSUserDefaults的使用您的主选项卡拉;
NSString *option1 = [[NSUserDefaults standardUserDefaults] objectForKey:@"option1"];
//使用选项1东西
- 1. 标签设置为一个视图
- 2. 设置一个UIimage视图等于另一个UIimage视图
- 3. Android ConstraintLayout - 将一个视图置于另一个视图上
- 4. 将值从一个视图传递到另一个视图
- 5. 在标签上滑动sholud将一个视图移动到另一个视图
- 6. 将视图从一个视图移动到另一个视图
- 7. 另一个视图的设置视图没有正确设置
- 8. 在另一个视图上设置标签以存储NSDate
- 9. 从另一个视图更新另一个视图的标签内容
- 10. 如何只为一个视图设置UINavigationController图像,然后为其余视图设置另一个图像?
- 11. 在另一个视图中设置NSURL。当前视图的值为零
- 12. 从一个视图中获取值并在另一个视图中将元素设置为yii
- 13. 从一个视图设置图像到另一个xcode 4.4
- 14. 如何将一个视图移动到另一个视图?
- 15. 将参数从一个视图转移到另一个视图?
- 16. 将数组从一个视图传递到另一个视图
- 17. 用另一个视图包装一个标签IOS
- 18. 如何将视图置于React Native的另一个视图中?
- 19. 如何从视图中navigationcontroller更改为一个视图在一个标签栏
- 20. 将文本值从一个视图传递到另一个视图
- 21. 如何将BOOL值从一个视图传递到另一个视图c
- 22. 将Firebase中的值从一个表视图传递到另一个表视图
- 23. 如何在Sencha Touch中将值一个视图发送到另一个视图?
- 24. 从另一个视图访问另一个视图的内容
- 25. emberjs从另一个视图转到另一个视图
- 26. 制作一个视图“透视”另一个视图
- 27. 如何将数组从一个视图传递到另一个视图内的另一个视图
- 28. 将xib视图初始化为另一个NSView的子视图
- 29. 如何将多个视图的一个DataContext设置为视图模型
- 30. 对另一个视图进行视图