首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Obj.C中的属性将数据传递到对象

使用Obj.C中的属性将数据传递到对象
EN

Stack Overflow用户
提问于 2013-10-31 16:06:37
回答 6查看 272关注 0票数 0

我很难理解父母和孩子是如何沟通的(以及他们如何相互传递数据)。我有两个简单的对象(两个ViewControllers)。我理解父-子关系应该允许我使用属性将两个变量从子对象传递到父对象。因为我包括了Obj。B进入Obj A,我假设A是父母,B是孩子。我也知道孩子知道父母,反之亦然,对吗?

我也包括了。B转入Obj。A和我希望能够访问我在Obj的头文件中声明的几个变量。B

谁能给我一个简单的例子,帮助我结束我的困惑?非常感谢。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-11-01 12:50:13

要将数据(对象或值)从推送或表示ViewControllerBViewControllerA转发到ViewControllers,您需要执行如下操作:

(例如,将NSString从ViewControllerA传递给ViewControllerB )

在没有存储板的情况下向前传递数据:

代码语言:javascript
复制
ViewControllerB *viewControllerB = [[ViewControllerB alloc] initWithNib:@"ViewControllerB" bundle:nil];
viewControllerB.aString = myString; // myString is the data you want to pass
[self presentViewController:viewControllerB animated:YES completion:nil];

使用UINavigationController

代码语言:javascript
复制
ViewControllerB *viewControllerB = [[ViewControllerB alloc] initWithNib:@"ViewControllerB" bundle:nil];
viewControllerB.aString = myString;
[self.navigationController pushViewController:viewControllerB animated:YES];

viewControllerB内部,您需要在.h上有一个@property,例如:

代码语言:javascript
复制
@property (nonatomic, strong) NSString *aString;

在您的.m中,您可以检索这个@property

代码语言:javascript
复制
- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    NSLog(@"%@", _aString);
}

这是一个使用NSString的示例,但是您可以传递任何对象。

票数 1
EN

Stack Overflow用户

发布于 2013-10-31 18:24:18

我觉得你倒过来了。父母应该知道孩子的事。孩子不需要知道父母的情况。

父级可以强烈引用其子级。(X)

代码语言:javascript
复制
//inside the parent class
@property (nonatomic, strong) id childObject;

子对象通常不会清楚地知道它的“父”是什么,但是它对委托的引用会很弱。该委托可以是特定类型的类,也可以是符合特定协议的类型id的泛型类。(X)

代码语言:javascript
复制
//inside the child class
@property (nonatomic, weak) id<SomeProtocol> delegate;
票数 1
EN

Stack Overflow用户

发布于 2013-10-31 16:15:27

可以在其中一个对象中使用弱赋值设置循环引用:

ObjectA.h

代码语言:javascript
复制
@class ObjectB
@interface ObjectA
@property (strong) ObjectB *parent;
@end

ObjectA.m

代码语言:javascript
复制
#import "ObjectA.h"
#import "ObjectB.h"
@implementation ObjectA
// methods
@end

ObjectB.h

代码语言:javascript
复制
@class ObjectA
@interface ObjectB
@property (weak) ObjectA *child;
@end

ObjectB.m

代码语言:javascript
复制
#import "ObjectB.h"
#import "ObjectA.h"
@implementation ObjectB
// methods
@end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19711468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档