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

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

我会稍微解释一下。

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

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

有人知道吗?

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

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

提前致谢。

费尔南多。

【问题讨论】:

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

标签: ios uibutton ibaction uipopover


【解决方案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
    }
    

    【讨论】:

    • 天哪,谢谢!我要试一试,但它似乎并不像我想象的那样复杂。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    • 2017-08-24
    • 2017-10-02
    • 1970-01-01
    相关资源
    最近更新 更多