3

Storyboardを使用して(UIWebViewを使用して)Webページをロードするアプリケーションを開発しています(以前のxibについても何も知りません)。その UIWebView のビュー コントローラーを既に作成しており、すべて正常に動作します。問題は、以前のバージョンの iOS ではファイルのアップロードが許可されていないため、ユーザーが写真を選択して投稿できるようにする新しいビュー (私はそれが呼ばれると思っていたシーン) を作成する必要があるということです。両方のビューを別々に開発でき、期待どおりに動作しますが、ユーザーがサーバーに画像を投稿したいときにトリガーされるイベントに基づいてそれらを接続する必要があります。iOS のバージョンが 6 未満の場合は、shouldStartLoadWithRequest を使用してそのアクションをキャッチできます。その後、新しいビュー (選択した画像をアップロードするための画像ピッカーとボタンを含む) にリダイレクトする必要があります。0 しかし、そのビューを表示するために新しいコントローラーをロードすることになると、私は本当に迷っています。ボタンを使用するのは簡単ですが、コード内で呼び出す方法がわかりません。これまでのところ、そのシーンにリンクされたView Controllerがあり、次の方法を試しました:

WritePostViewController *postViewController = [[WritePostViewController alloc] init];
[self.navigationController pushViewController:postViewController animated:YES];

そして、ストーリーバードを呼び出すことさえ:

UIStoryboard *sb = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
[sb instantiateInitialViewController];
UIViewController *vc = [sb instantiateViewControllerWithIdentifier:@"WritePostView"];
vc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentViewController:vc animated:YES completion:NULL];

最初のアプローチでは何も実行されず、2 番目のアプローチでは次のエラー ログが表示されます。

* WebKit は webView:decidePolicyForNavigationAction:request:frame:decisionListener: delegate: Storyboard () に識別子 'WritePostView' を持つビュー コントローラーが含まれていないため、キャッチされなかった例外を破棄しました*

私はたくさん閲覧して読んでいますが、私の問題を解決するものは何もありません。確かに、これは私の iOS に関する知識がそれほど多くないことによる問題ですが、本当に行き詰っています。どんな助けにも感謝します。

ところで、ファイルを投稿した後に戻ってくる必要がありますが、同じように反対方向にあると想像できますよね?

4

2 に答える 2

3

コードがビュー コントローラー内にある場合 (そのようです)、現在のストーリーボードを で取得できますself.storyboardinstantiateInitialViewControllerすべての UI が同じストーリーボードから来ている場合は、最初のコントローラーの読み込みが既に完了しているため、必要ありません。

実際のエラーについては、 @"WritePostView" がストーリーボード内のビュー コントローラーの名前として認識されていないことを訴えています。ここで検索するのは、コントローラーのクラス名ではなく、コントローラーのストーリーボード ID であることに注意してください。(同じタイプのコントローラーで異なる「シーン」を持つことができるので、これは理にかなっています。)

于 2012-11-02T16:02:37.033 に答える
0

わかりました、解決したようです。シーン間にセグエを追加しました

セグエ識別子

そして、これを追加するだけです:

[self performSegueWithIdentifier:@"writePostViewSegue" sender:self];

そしてそれは動作します!とにかく、それが正しい方法かどうかわからないので、誰かが知っているなら、私に知らせてください。

乾杯

于 2012-11-02T16:02:03.207 に答える