0

アプリ内の記事にリンクされた Web ページを表示していますが、すべてが SSL 接続を提供しているわけではありません。そのため、Web サイトを表示するために SFSafariViewController を実装する必要がありました。

私の iPad インターフェイスでは、手動でビューを mainController に追加しますが、SFSafariViewController のビューを追加しようとしても、何も得られません。

だから私は使用しようとしました:

[[[self parent] navigationController] presentViewController:webView animated:YES completion:nil];

ただし、これは非常にうまく機能しますが、何らかの理由でデータソースが後で「nil」オブジェクトを返します。presentViewController を呼び出すビュー内のオブジェクトへの強力なリンクを保持していても。

私の回避策は、開いているすべてのビューを閉じ、SFSafariViewController が閉じられたときにデータセットをリロードすることですが、ユーザーは元の場所に戻る必要があるため、これはユーザー エクスペリエンスには適していません。

SFSafariViewController の起動後に NSFetchedResultsControllers がすべて「nil」を返す理由は完全にわかりません。どんなヒントでも大歓迎です。

[編集:] これは私のメイン ビュー コントローラーの宣言です。iPad コントローラーは、SFSafariViewController を起動するときに、このコントローラーを呼び出します。

@interface DOMainViewController : UIViewController <UINavigationControllerDelegate> {
    id <DOActionControllerProtocol> _actionController;
    MPMoviePlayerViewController* _moviePlayerViewController;
    UINavigationController* _navigationController;

}

SFSafariViewController の呼び出し (親は DOMainViewController です):

SFSafariViewController* webView = [[SFSafariViewController alloc] initWithURL:link];
[webView setDelegate:self];
[[[self parent] navigationController] presentViewController:webView animated:YES completion:nil];

DOiPadController の定義は次のとおりです。ここで、表示される s=views は _viewControllers に格納されます。

@interface DOiPadActionController : NSObject <DOActionControllerProtocol, SFSafariViewControllerDelegate> {
@private
    DOMainViewController* __weak _parent;

    NSMutableArray* _viewControllers;
    NSMutableArray* _oldViewControllers;

    int _firstViewX;
    int _previousTranslation;
    CGPoint _translatedPoint;

    bool _bouncedLeft;
    bool _bouncedRight;
    bool _overruleBounce;

    //Need to be able to enable and disable.
    UIPanGestureRecognizer *_panRecognizer;
}

必要がなくなったらそこからビュー コントローラーを解放し、必要に応じて新しいビュー コントローラーを追加します。これにより、ビューなどをスライスして切り取ることができます。

iPhone アプリでは、ビューにナビゲーション コントローラーを使用していますが、問題はないようです。

4

0 に答える 0