Ios5 Can';在表视图中选择项后关闭popover
我正在使用XCode版本4.3.2创建和安装iPad应用程序。我不知道如何关闭在故事板中创建的popover 在我的主屏幕上有一个按钮。在故事板上,我定义了一个从按钮到我的popover的序列。我的popover是一个表视图控制器。在popover表视图中选择一个项目后,我将所选信息发送回父级并尝试关闭popover。一切都正常,只是我不能把爆米花关上 主屏幕.m文件的代码:Ios5 Can';在表视图中选择项后关闭popover,ios5,uitableview,uipopovercontroller,xcode4.3,Ios5,Uitableview,Uipopovercontroller,Xcode4.3,我正在使用XCode版本4.3.2创建和安装iPad应用程序。我不知道如何关闭在故事板中创建的popover 在我的主屏幕上有一个按钮。在故事板上,我定义了一个从按钮到我的popover的序列。我的popover是一个表视图控制器。在popover表视图中选择一个项目后,我将所选信息发送回父级并尝试关闭popover。一切都正常,只是我不能把爆米花关上 主屏幕.m文件的代码: #import "SectionViewController.h" #import "SortByTableViewCo
#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
}
#导入“SectionViewController.h”
#导入“SortByTableViewController.h”
@接口节视图控制器()
@结束
@实现部分视图控制器
-(void)prepareForSegue:(UIStoryboardSegue*)segue发送方:(id)发送方
{
if([segue.identifier IsequalString:@“DisplaySortByOptions”])
{
SortByTableViewController*弹出=(SortByTableViewController*)segue.destinationViewController;
popup.selectedSection=self.selectedSection;
popup.receivedOption=self.selectedItemCharacteristic;
popup.delegate=self;
}
}
-(void)sortByTableViewController:(sortByTableViewController*)发送方
returnedOption:(ItemCharacteristic*)returnedOption
{
如果(!returnedOption)
{
[self.sortByButton setTitle:@“显示所有”状态:UIControlStateNormal];
}
其他的
{
[self.sortByButton setTitle:returnedOption.name for状态:UIControlStateNormal];
}
self.itemCharacteristic=返回选项;
[self dismissViewControllerAnimated:YES completion:nil];//这不会关闭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
#导入
@类SortByTableViewController;
@协议SortByTableViewControllerDelegate
-(void)sortByTableViewController:(sortByTableViewController*)发送方
returnedOption:(ItemCharacteristic*)returnedOption;
@结束
@接口SortByTableViewController:UITableViewController
@属性(非原子,强)部分*selectedSection;
@属性(非原子,强)ItemCharacteristic*receivedOption;
@属性(非原子,弱)id委托;
@结束
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
#导入“SortByTableViewController.h”
@接口SortByTableViewController()
@结束
@实现SortByTableViewController
@综合selectedSection=\u selectedSection;
@综合接受度=_接受度;
@综合委托=_委托;
...
-(void)tableView:(UITableView*)tableView未选择RowatineXpath:(NSIndexPath*)indexPath
{
ItemCharacteristic*ItemCharacteristic=[self.fetchedResultsController对象索引路径:indexPath];
[self.delegate sortByTableViewController:self returnedOption:itemCharacteristic];
[self-dismissViewControllerAnimated:YES completion:nil];//这不起作用
[self.navigationController popViewControllerAnimated:是];//这也不起作用
}
@结束
谢谢你的帮助和指导。我找到了答案。我必须将以下属性添加到主屏幕:
@property (nonatomic, strong) UIPopoverController *sortByPopoverController;
然后,在启动popover时,我包括以下内容:
UIStoryboardPopoverSegue *popoverSegue = (UIStoryboardPopoverSegue *)segue;
self.sortByPopoverController = popoverSegue.popoverController;
包括该代码使我能够在代理回电时正确地关闭popover:
[self.sortByPopoverController dismissPopoverAnimated:YES];
在斯威夫特,就叫这个
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
{
self.dismissViewControllerAnimated(true, completion: nil)
}