Ios 在弹出窗口中分配给contentViewController属性时,表视图控制器不显示数据
我有一个弹出按钮,里面有一个表视图控制器和表视图。我已经为表视图创建了一个单独的数据源。故事板中的所有内容都连接在一起: 我在应用程序的主视图控制器中保留了一个对表视图控制器的引用(以便在弹出框关闭后进行工作)。我想在popover内的表视图中保留选择。以下是主视图控制器中的my-prepareforsgue:sender:method:Ios 在弹出窗口中分配给contentViewController属性时,表视图控制器不显示数据,ios,storyboard,Ios,Storyboard,我有一个弹出按钮,里面有一个表视图控制器和表视图。我已经为表视图创建了一个单独的数据源。故事板中的所有内容都连接在一起: 我在应用程序的主视图控制器中保留了一个对表视图控制器的引用(以便在弹出框关闭后进行工作)。我想在popover内的表视图中保留选择。以下是主视图控制器中的my-prepareforsgue:sender:method: - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"Popover"]) {
UIStoryboardPopoverSegue *popover = (UIStoryboardPopoverSegue *)segue;
popover.popoverController.delegate = self;
popover.popoverController.contentViewController = (AJFTableViewController *)self.filterTableViewController;
}
}
我的问题是:当我将popover的contentViewController分配给应用程序的主视图控制器引用的表视图控制器(上面方法的最后一行)时,表视图中不会显示任何数据。我已经确认正在创建数据源,甚至在该方法结束时尝试在tableView上手动调用reloadData,但仍然没有显示任何内容
如果注释掉最后一行(将popover contentViewController指定给table view controller属性),则会在table view中看到数据。但是,每次弹出窗口出现时都会创建一个新的表视图控制器,这不是我想要的
如何将popover的contentViewController正确分配给我在应用程序的主视图控制器中保留的表视图控制器,以便在弹出窗口出现时显示数据?您将无法使用segue来执行此操作,因为segues总是实例化新的控制器。如果您想重用content controller的同一个实例,那么您需要用类似这样的代码表示它
@interface ViewController ()
@property (strong,nonatomic) AJFTableViewController *filterTableViewController;
@property (strong,nonatomic) UIPopoverController *popController;
@end
@implementation ViewController
- (IBAction)showPopover:(UIButton *)sender {
if (! self.filterTableViewController) {
self.filterTableViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Table"];
}
self.popController = [[UIPopoverController alloc] initWithContentViewController:self.filterTableViewController];
self.popController.delegate = self;
[self.popController presentPopoverFromRect:sender.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES];
}
谢谢,我不知道seques总是实例化新的控制器。