BDG*_*pps 10 xcode objective-c ipad uipopovercontroller ios
我试图从Popover中的按钮中解除UIPopoverViewControler.另外我希望它将数据传回主视图.我有一个modalViewController但不适用于Popover.有谁知道我怎么能做到这一点?
//酥料饼
- (IBAction) save:(id)sender
{
if ([self startDateIsValid] && [self endDateIsValid])
{
[[self parentViewController] setDatesForEvent:startDate eventEndDate:endDate allDay:[allDaySwitch isOn]];
[self dismissModalViewControllerAnimated:YES];
}
}
Run Code Online (Sandbox Code Playgroud)
// AddEventViewController_iPad
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import "dateViewPopOverViewController_iPad.h"
@interface AddEventViewController_iPad : UIViewController <UITableViewDelegate,UITableViewDataSource, MFMailComposeViewControllerDelegate, UITextFieldDelegate, UIAlertViewDelegate,UIPopoverControllerDelegate,UINavigationControllerDelegate,UIPopoverControllerDelegate,ABPeoplePickerNavigationControllerDelegate, ABNewPersonViewControllerDelegate,DismissPopoverDelegate> {
Run Code Online (Sandbox Code Playgroud)
// datePopover
#import <UIKit/UIKit.h>
#import "AddEventViewController_iPad.h"
@protocol DismissPopoverDelegate <NSObject>
- (void) dismissWithData:(NSString *)data;
@end
@interface dateViewPopOverViewController_iPad : UIViewController<UIPopoverControllerDelegate> {
Run Code Online (Sandbox Code Playgroud)
5hr*_*hrp 23
想法很简单.YourViewController
- 它的viewController UIPopoverController
.MainViewController
- 您创建的控制器UIPopoverController
YourViewController
用dismiss方法声明协议id<DismissDelegateProtocol>
在YourViewController
DismissDelegateProtocol
在MainViewController
DismissDelegateProtocol
在MainViewController
YourViewController
在MainViewController
set delegate property(yourViewController.delegate = self;
)中创建时[self.delegate dismissWithData:dataToTransfer];
在代码中它应该是这样的:
在MainViewController.h中:
#import "YourViewController.h"
@class MainViewController: UIViewController < DismissPopoverDelegate >
Run Code Online (Sandbox Code Playgroud)
在MainViewController.m中:
- (void) dismissPopover:(NSObject *)yourDataToTransfer
{ /* Dismiss you popover here and process data */ }
...
// Some method, when you create popover
{
YourViewController *vc = ... ;
vc.delegate = self; // this delegate property should be declared as assign
}
Run Code Online (Sandbox Code Playgroud)
在YourViewController.h中:
@protocol DismissPopoverDelegate
- (void) dismissPopover:(NSObject *)yourDataToTransfer;
@end
@class YourViewController : UIViewController
{
id<DismissPopoverDelegate> delegate;
}
@property (nonatomic, assign) id<DismissPopoverDelegate> delegate;
Run Code Online (Sandbox Code Playgroud)
在YourViewController.m中:
- (void) methodWhenYouWantToDismissPopover
{
[self.delegate dismissPopover:data];
}
Run Code Online (Sandbox Code Playgroud)
isa*_*aac 11
Sharrps的回答非常好,但是如果您要呈现一个子类视图控制器,这里的方法可能会更快一些.
因此,如果您已经为要呈现的UIViewController创建了子类,请在其上定义一个指向UIPopoverController的属性.在您呈现视图控制器,实例化您的自定义视图控制器,与该自定义视图控制器实例化你的酥料饼,然后指定自定义视图控制器它的属性设置为指向包含它的酥料饼的控制器.
当需要解雇时,你的控制器会引用它的弹出并且可以解雇它.弹出窗口还有一个指向它的父视图控制器的指针,因此您可以通过原始呈现视图控制器执行与模型相关的任何操作.
归档时间: |
|
查看次数: |
15136 次 |
最近记录: |