将数据从视图控制器发送到另一个

Posted

技术标签:

【中文标题】将数据从视图控制器发送到另一个【英文标题】:Sending data from a viewcontroller to another 【发布时间】:2013-07-02 18:29:27 【问题描述】:

我正在努力做一件简单的事情(至少我认为它很简单)但我就是做不到!

我会稍微解释一下。

这是一个显示信息的应用程序。当用户在视图中时,他可以单击一个按钮,该按钮显示一个弹出视图,他可以在其中选择他想知道的信息。

实际上,当用户单击 popoverview 的按钮时,我无法创建更改我在主视图中创建的 UILabel 文本的操作。

有人知道吗?

只是为了让你知道:我为它创建了一个类的主视图,也为 popoverview 创建了一个类。虽然,我在 XIB 文件中创建了它的设计的弹出视图(我不知道这是否重要,这就是我放这个的原因)。

好吧,我希望你们能够理解我的问题。

提前致谢。

费尔南多。

【问题讨论】:

我看到您是初学者(对此没有任何问题),但在我看来,SO 不是您在没有任何先前研究的情况下直接发布问题的地方,我用谷歌搜索了您的问题并且有很多 SO 帖子可以向您展示如何做您需要的事情。我认为您应该查看它们,尝试其中一些,如果某些内容无法按您预期的那样工作,请在 SO 上发布问题。 是的,就像你说的,我是初学者。我做了你说的,我尝试了很多,我对自己说:这将是我的最后一枪,这就是我在这里发布我的问题的原因。不过还是谢谢:) 我写了我的第一条评论作为建议,您在 SO 上发布问题并不困扰我,如果我不喜欢这个问题,我不会回答,但其他 SO 用户不会喜欢它,你最终会得到封闭的问题或反对票;) 当然,我完全理解你,谢谢你的建议 :) 【参考方案1】:

只需从视图控制器创建一个属性并从消费者(其他视图控制器)访问它

【讨论】:

【参考方案2】:

当您在弹出框内执行不同操作时,您必须使用委托才能在主视图中看到更改。首先,你需要在你的 popover 控制器头文件中创建一个协议:

#import <Foundation/Foundation.h>

@class MyPopoverController;
@protocol MyPopoverDelegate
- (void)valueChanged:(NSString*) newVal;
@end

@interface MyPopoverController: UIPopoverController 

@property (weak) id<MyPopoverDelegate> delegate;

@end

然后在 .m 中你可以这样实现它:

 - (void) someActionOccured
    
        if([self.delegate respondsToSelector:@selector(valueChanged:)])
           [self.delegate valueChanged:valueYouWantToSendBack];
        
    

记住,在你的主类中你必须实现MyPopoverDelegate 协议:

@interface MainViewController: UIViewController <MyPopoverDelegate>

当你实例化你的 popover 控制器时:

/*
** inside MainViewController.m
*/ 
// remember to assign it's delegate 
MyPopoverController *popoverController = [MyPopoverController alloc] init]; 
popoverController.delegate = self;

此外,您还必须实现协议的方法:

/*
** inside MainViewController.m
*/ 
- (void)valueChanged:(NSString*) newVal

// process the string and display it where you need it

【讨论】:

天哪,谢谢!我要试一试,但它似乎并不像我想象的那样复杂。非常感谢!

以上是关于将数据从视图控制器发送到另一个的主要内容,如果未能解决你的问题,请参考以下文章

将数据从视图控制器发送到另一个

使用当前模态将数据从一个 uiviewcontroller 发送到另一个 navigationcontroller

将信息从视图控制器发送到另一个

将数组从自定义单元格发送到另一个视图控制器

将数据从 didSelectRowAtIndexPath 传递到另一个视图控制器 ios7

如何将params从其他视图模态窗体发送到另一个控制器