我有一个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 时,将调用上述方法,并重新加载您的集合视图。