使用模式视图完成后重新加载 UICollectionView



我有一个UICollectionView。当用户点击某个项目时,视图上将显示一个模式表单工作表窗口。当用户点击完成时,我想调用[self.collectionView reloadData],或者执行等效操作。但是,viewWillAppear不适用于表单表。知道如何让它工作吗?

最好的方法是实现方法

-(void) closeModalView {
    [self dismissViewControllerAnimated:YES completion:nil];
}

在您的 UICollectionView 中。此方法最好在协议中声明您的 UICollectionView 应确认:

@protocol YourModalViewDelegate <NSObject>;
    @required
    -(void) closeModalView;
@end

当您想要关闭自身时,在模态视图中调用此方法:

[delegate closeModalView];

其中委托是模式视图中的属性:

@property (strong, nonatomic) id <YourModalViewDelegate> delegate;

可以使用以下方式在 UICollectionView 中设置此属性:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"segueToModalViewIdentifier"]) {
        YourModalViewClass *yourModalView = (YourModalViewClass *)[segue destinationViewController];
        [yourModalView setDelegate:self];
}

您应该在控制器上创建一个协议,以呈现新的模态视图控制器。 然后,可以在按第二个视图控制器中的 done 按钮时调用该方法。您可以在 Xcode 的实用程序应用程序模板中找到有关如何创建此类协议的工作示例。您可以在 Apple 的编程指南中找到更多信息。

Apple Dev论坛上的某个人帮助了我。供参考:将其放入 CollectionView 控制器中。- (IBAction)formSheetWindowDoneButtonPressed:(UIStoryboardSegue *)sender { [自我收藏查看重新加载数据];}

您可以更改方法的名称,但保持签名的其余部分保持不变。 现在,在情节提要中,控制+拖动从完成按钮到该视图控制器的退出 segue。 这是视图底部的绿色框,箭头指向右侧。 当您松开拖动时,您应该会看到formSheetWindowDoneButtonPressed:作为一个选项。 选择那个,您现在已经正确链接了您的退出 Segue。 当他们按 done 时,将调用上述方法,并重新加载您的集合视图。

最新更新