我有一个UICollectionView。当用户点击某个项目时,视图上会出现一个模态表单窗口。当用户点击完成后,我想要调用[self.collectionView reloadData]
或其他类似的东西。但是,viewWillAppear
不适用于表单。知道如何让这个工作吗?
答案 0 :(得分:1)
执行此操作的最佳方法是实现方法
-(void) closeModalView {
[self dismissViewControllerAnimated:YES completion:nil];
}
在您的UICollectionView中。这种方法最好在协议中声明您的UICollectionView应该确认:
@protocol YourModalViewDelegate <NSObject>;
@required
-(void) closeModalView;
@end
如果要关闭自身,请在模态视图中调用此方法:
[delegate closeModalView];
其中delegate是模态视图中的属性:
@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];
}
答案 1 :(得分:0)
您应该在控制器上创建一个呈现新模态视图控制器的协议。然后,您可以在第二个视图控制器中按完成按钮时调用该方法。您可以在Xcode的Utility Application模板中找到如何创建此类协议的工作示例。您可以在Apple's programming guides中找到更多信息。
答案 2 :(得分:0)
Apple Dev论坛上有人帮助了我。以供参考: 把它放在CollectionView控制器中。 - (IBAction)formSheetWindowDoneButtonPressed:(UIStoryboardSegue *)sender { [self.collectionView reloadData]; }
您可以更改方法的名称,但保持其余签名相同。现在,在故事板中,控制+从完成按钮拖动到该视图控制器的出口segue。这是视图底部的绿色框,箭头指向右侧。当您放开拖动时,您应该看到formSheetWindowDoneButtonPressed:作为选项。选择那个,你现在已经适当地链接了你的出口塞。按下完成后,将调用上面的方法并重新加载集合视图。