将数据从viewcontroller发送到另一个

时间:2013-07-02 18:29:27

标签: ios uibutton ibaction uipopover

我正在努力做一件简单的事情(至少我认为这很简单),但我不能这样做!

我会尝试解释一下。

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

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

任何人都有任何想法?

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

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

提前致谢。

费尔南多。

2 个答案:

答案 0 :(得分:0)

只需从viewcontroller创建一个属性,然后从使用者(其他viewcontroller)访问它

答案 1 :(得分:0)

当你在popover中做出不同的动作时,你必须使用委托才能看到主视图中的变化。首先,您需要在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>

当您实例化弹出控制器时:

/*
** 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
}