Objective c 我是否可以将一名代表指定为“a”;具体的;ViewController的实例,以获取它';谁的数据?

Objective c 我是否可以将一名代表指定为“a”;具体的;ViewController的实例,以获取它';谁的数据?,objective-c,ios,uiviewcontroller,delegates,delegation,Objective C,Ios,Uiviewcontroller,Delegates,Delegation,我该怎么做 我有视图控制器1和视图控制器2 ViewController 1定义协议,并且ViewController 2遵守协议 我设置ViewController 2有一个委托,并在ViewController 1中调用一个方法。这种方法运行良好。并将确认信息发送回myViewController 2 我可以在它们之间交换数据,但我正在试图找到一种方法,从ViewController 1的特定实例到ViewController 2获取数据 因为当我使用委托时,要在ViewController

我该怎么做

我有视图控制器1视图控制器2

ViewController 1定义协议,并且ViewController 2遵守协议

我设置ViewController 2有一个委托,并在ViewController 1中调用一个方法。这种方法运行良好。并将确认信息发送回myViewController 2

我可以在它们之间交换数据,但我正在试图找到一种方法,从ViewController 1的特定实例ViewController 2获取数据

因为当我使用委托时,要在ViewController 1中运行一个方法,它不适用于我感兴趣的特定实例

我有办法解决这个问题吗

我可以设置我的委托,一个特定实例的委托,这样我就可以得到它的状态吗?这可能吗?如果是,怎么做

换句话说,我可以用我的委托将特定实例作为目标吗

--

p、 如果我试图获取由ViewController 1控制的属性的数据,它的值为零(我认为这是因为我没有针对特定实例)!我可以解决这个问题的一个方法是使用一个读取“已保存数据”的方法。但我将复制代码,并用以前的ViewController中已有的数据实例化新对象

非常感谢您的帮助。提前谢谢你

努诺

编辑:


从这一点开始,我试图得到的所有财产都是零。如何将其定位到我以前的ViewController的特定实例?我不想实例化新的SetupViewController。我真正需要的是访问我的SetupViewController的现有实例。

这个问题非常模糊,您可能应该发布一些代码来更好地解释您试图实现的目标

“我可以在他们之间交换数据,但我正试图找出一个解决方案 方法,从ViewController 1的特定实例获取数据 视图控制器2。“


当您执行myViewController1Instance.delegate=self,您所做的任何委托调用都只会从myViewController1Instance对象发送到ViewController2,而不会从ViewController1类的其他实例发送。

请尝试使用通知,而不是像您尝试的那样使用委托。。当一个实例知道它需要发送一些东西时,它抛出一个通知,表示它被视图控制器2捕获

为什么屏幕上有多个vc1实例?您能否提供更多有关您试图实现的目标的信息?

将(UIViewController*)发送方添加到协议消息中

收到邮件后,请检查发件人,如果不是您感兴趣的发件人,请返回

不过我同意Sorin的说法,你最好使用通知


这样的问题通常可以通过架构改进来解决。退一步思考数据是否在正确的位置总是好的。

我认为您需要显示代码。为什么视图控制器有多个实例?好吧,这肯定是你的问题。您正在创建一个新实例,然后将该新实例指定为委托。如何创建第二个视图控制器?是推的吗?莫代利?等等?它是分段的。完成与故事板。所有东西都嵌入到导航控制器中“下面是我正在做的,SetupTableViewController*委托=[[SetupTableViewController alloc]init];[delegate setDelegate:self];实际上,按照您编写它的方式,
myViewController1Instance
会将它的
delegate
调用发送到
self
。而不是相反。您是否分配/初始化您尝试获取的属性?它们是否在viewDidLoad方法中初始化。@我假设行myViewController1Instance.delegate=self;是在ViewController2实例中完成的。我知道,但您说过“您所做的任何委托调用都将只发送给myViewController1Instance对象”。这是不正确的。myViewController1Instance的委托调用是发送给它的
委托
属性的委托调用,该属性是
self
,因此它应该是您所做的任何代表呼叫将仅从
myViewController1Instance
发送到
self
“你编写代码片段的方式。我花了一段时间才明白大家在说什么。但是到了那里。非常感谢你的帮助!老实说,我有3个风险投资。我正在尝试从vc1到vc3获取一个阵列。但我需要根据我的理解,针对vc1的实例。而不是创建一个新实例,它的属性为nil。
SetupTableViewController *delegate = [[SetupTableViewController alloc] init];
[delegate setDelegate:self];