gpt4 book ai didi

objective-c - 如何从 Popover 中的按钮关闭 UIPopover

转载 作者:技术小花猫 更新时间:2023-10-29 10:55:40 24 4
gpt4 key购买 nike

我试图从 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];

}

}

//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> {

//日期弹出框

#import <UIKit/UIKit.h>
#import "AddEventViewController_iPad.h"
@protocol DismissPopoverDelegate <NSObject>

- (void) dismissWithData:(NSString *)data;

@end

@interface dateViewPopOverViewController_iPad : UIViewController<UIPopoverControllerDelegate> {

最佳答案

想法很简单。 YourViewController - 它是 UIPopoverController 的 viewController . MainViewController - 创建的 Controller UIPopoverController

  1. YourViewController 中声明协议(protocol)用解雇方法
  2. 声明 id<DismissDelegateProtocol> 类型的属性在 YourViewController
  3. 声明支持DismissDelegateProtocolMainViewController
  4. 实现 DismissDelegateProtocol 的关闭方法在 MainViewController
  5. 当您创建 YourViewControllerMainViewController设置委托(delegate)属性 ( yourViewController.delegate = self; )
  6. 实际上,对按钮触摸调用委托(delegate)方法的响应:[self.delegate dismissWithData:dataToTransfer];

在代码中应该是这样的:

在 MainViewController.h 中:

#import "YourViewController.h"
@class MainViewController: UIViewController < DismissPopoverDelegate >

在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
}

在 YourViewController.h 中:

@protocol DismissPopoverDelegate
- (void) dismissPopover:(NSObject *)yourDataToTransfer;
@end

@class YourViewController : UIViewController
{
id<DismissPopoverDelegate> delegate;
}

@property (nonatomic, assign) id<DismissPopoverDelegate> delegate;

在 YourViewController.m 中:

- (void) methodWhenYouWantToDismissPopover
{
[self.delegate dismissPopover:data];
}

关于objective-c - 如何从 Popover 中的按钮关闭 UIPopover,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5922254/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com