アプリにがあるので、押すたびにUIAlertController
アラートを表示したい。menuButton
特定のアイデアのために再作成する必要が_menuAlert
あります(説明されていない別のオブジェクトをチェックする必要がありますaction
)。したがって、保持_shareAction
し、再作成するUIAlertController
と、どういうわけか、それはハンドラーになりnil
ます。
なぜこれが起こるのかを理解するには、ブロックについて大きな何かが欠けているように感じます. 理解を助けてください。
コードがあります:
- (UIAlertController *)menuAlert
{
_menuAlert = [UIAlertController alertControllerWithTitle:nil
message:nil
preferredStyle:UIAlertControllerStyleActionSheet];
@weakify(self);
if (!_shareAction)
{
_shareAction = [UIAlertAction actionWithTitle:NSLocalizedString(@"SHARE_BTN_TEXT", nil)
style:UIAlertActionStyleDefault
handler:^(UIAlertAction * _Nonnull action) {
@strongify(self);
[self.navigationController presentShareVCWithList:_list];
}];
}
if (!_cancelAction) {
_cancelAction = [UIAlertAction actionWithTitle:NSLocalizedString(@"ALERT_CANCEL", nil)
style:UIAlertActionStyleCancel
handler:nil];
}
[_menuAlert addAction:_shareAction];
[_menuAlert addAction:_cancelAction];
return _menuAlert;
}
menuAlert の呼び出し方法:
- (void)menuButtonPressed
{
[self presentViewController:self.menuAlert animated:YES completion:nil];
self.menuAlert.view.tintColor = COLOR_BACKGROUND_GREEN;
}