我正在努力做一件简单的事情(至少我认为这很简单),但我不能这样做!
我会尝试解释一下。
这是一个显示信息的应用程序。当用户在视图中时,他可以单击一个显示popoverview的按钮,在那里他可以选择他想知道的信息。
实际上,当用户点击popoverview的按钮时,我无法创建一个更改我在主视图中创建的UILabel文本的操作。
任何人都有任何想法?
只是为了让您知道:主视图我为它创建了一个类,也为popoverview创建了一个类。虽然,popover视图我在XIB文件中创建了它的设计(我不知道这是否重要,这就是我放这个的原因)。
好吧,我希望你们能够理解我的问题。
提前致谢。
费尔南多。
答案 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
}