gpt4 book ai didi

ios5 - 在表格 View 中选择项目后无法关闭弹出框

转载 作者:行者123 更新时间:2023-12-04 05:46:32 25 4
gpt4 key购买 nike

我正在使用 XCode 4.3.2 版创建 iPad 应用程序。我无法弄清楚如何关闭在 Storyboard 中创建的弹出框。

在我的主屏幕上,我有一个按钮。在 Storyboard 上,我从那个按钮到我的弹出框定义了一个segue。我的弹出框是一个表格 View Controller 。在弹出框 TableView 中选择一个项目后,我将所选信息发送回父级并尝试关闭弹出框。一切正常,除了我无法关闭弹出窗口。

主屏幕 .m 文件的代码:

#import "SectionViewController.h"
#import "SortByTableViewController.h"

@interface SectionViewController () <SortByTableViewControllerDelegate>
@end

@implementation SectionViewController

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"DisplaySortByOptions"])
{
SortByTableViewController *popup = (SortByTableViewController*)segue.destinationViewController;
popup.selectedSection = self.selectedSection;
popup.receivedOption = self.selectedItemCharacteristic;
popup.delegate = self;
}
}

- (void)sortByTableViewController:(SortByTableViewController *)sender
returnedOption:(ItemCharacteristic *)returnedOption
{
if(!returnedOption)
{
[self.sortByButton setTitle:@"SHOW ALL" forState:UIControlStateNormal];
}
else
{
[self.sortByButton setTitle:returnedOption.name forState:UIControlStateNormal];
}
self.itemCharacteristic = returnedOption;
[self dismissViewControllerAnimated:YES completion:nil]; //THIS DOES NOT CLOSE THE POPOVER
}

popover .h 文件的代码:
#import <UIKit/UIKit.h>

@class SortByTableViewController;

@protocol SortByTableViewControllerDelegate <NSObject>

- (void)sortByTableViewController:(sortByTableViewController *)sender
returnedOption:(ItemCharacteristic *)returnedOption;

@end

@interface SortByTableViewController : UITableViewController

@property (nonatomic, strong) Section *selectedSection;
@property (nonatomic, strong) ItemCharacteristic *receivedOption;
@property (nonatomic, weak) id <SortByTableViewControllerDelegate> delegate;

@end

popover .m 文件的代码:
#import "SortByTableViewController.h"

@interface SortByTableViewController () <UITableViewDelegate>

@end

@implementation SortByTableViewController

@synthesize selectedSection = _selectedSection;
@synthesize receivedOption = _receivedOption;
@synthesize delegate = _delegate;

...
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
ItemCharacteristic *itemCharacteristic = [self.fetchedResultsController objectAtIndexPath:indexPath];
[self.delegate sortByTableViewController:self returnedOption:itemCharacteristic];
[self dismissViewControllerAnimated:YES completion:nil]; //THIS DOESN'T WORK
[self.navigationController popViewControllerAnimated:YES]; //THIS DOESN'T WORK EITHER
}

@end

感谢您的任何帮助或指导。

最佳答案

我找到了答案。我必须将以下属性添加到我的主屏幕:

@property (nonatomic, strong) UIPopoverController *sortByPopoverController;

然后,在启动弹出窗口时,我包括了这个:
UIStoryboardPopoverSegue *popoverSegue = (UIStoryboardPopoverSegue *)segue;
self.sortByPopoverController = popoverSegue.popoverController;

包含该代码允许我在委托(delegate)回叫时正确关闭弹出框:
[self.sortByPopoverController dismissPopoverAnimated:YES];

关于ios5 - 在表格 View 中选择项目后无法关闭弹出框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10607201/

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