1

アプリにがあるので、押すたびに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;
}
4

0 に答える 0