我有两个UIViewController
:
在主视图控制器中,我有IBAction方法:
-showPickerView
在这种方法中,我需要创建一个块来呈现PickerVC视图,并在我在PickerVC视图上选择某些值并按Done按钮时等待我。
在此块中,我需要实现在按完按钮后将在MainVC中调用方法的回调。
因此,我之前使用过block,但是我不知道如何自己实现。
我认为第一部分将是这样的:
- (IBAction)showPickerView {
__block PickerVC *pickerVC = [[PickerVC alloc] init];
[pickerVC setFinishBlock:^{
// Do something after user press on Done button
}];
[pickerVC setFailedBlock:^{
// Do something if something wrong (but this method optional)
}];
[pickerVC showPicker];
}
最佳答案
在PickerVC的标头中添加两个typedef
typedef void (^FinishBlock)();
typedef void (^FailedBlock)();
并且您对setFinishedBlock的声明采用了FinishBlock
- (void)setFinishBlock:(FinishBlock)finishBlock;
- (void)setFailedBlock:(FailedBlock)failedBlock;
为每个块制作一个iVar
@interface PickerVC : UIViewController
{
FinishBlock _finishBlock;
FailedBlock _failedBlock;
}
在
setFinishedBlock:
和setFailedBlock:
的定义中,将参数设置为iVarsPickerVC失败或完成后,立即调用
_failedBlock
或_finishedBlock
。__block
语句用于在块中使用变量时将其保留在内存中。所以您在上面的代码中不需要它关于ios - ios块示例。如何创建块 objective-c ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11666310/