0

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

我将尝试解释一下。

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

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

有人有什么想法吗?

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

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

提前致谢。

费尔南多。

4

2 回答 2

0

当您在弹出框内进行不同操作时,您必须使用委托才能查看主视图中的更改。首先,您需要在 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
}
于 2013-07-02T18:55:53.823 回答
0

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

于 2013-07-02T18:32:27.683 回答