問題タブ [viewdidappear]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
iphone - viewDidAppearを手動で呼び出す正しい時間ですか?
私UITableViewController
のアプリには、ビュー階層に直接追加されたがあります。ビューが表示されたら、特定のセルにスクロールします。私の解決策は、でスクロールするためのコードを呼び出すことです-[viewDidAppear]
。
Appleのドキュメントによると、メソッドを手動で呼び出す必要があります。
ビューコントローラに属するビューがビュー階層に直接追加された場合、ビューコントローラはこのメッセージを受信しません。ビューをビュー階層に挿入または追加し、ビューコントローラがある場合は、関連するビューコントローラにこのメッセージを直接送信する必要があります。
問題は、手動で呼び出すのに適切なタイミングはいつかということです。
親ビューコントローラから呼び出すと-[viewDidAppear]
、スクロールを実行しようとするとクラッシュが発生します。これは、テーブルビューが実際にはまだ表示されていないため、スクロールするセクションがないと考えているためです。
uinavigationcontroller - viewDidAppearがTabbarcontroller>NavigationController>UITableViewで起動しない
現在、タブの1つにナビゲーションコントローラーが設定されたタブバーコントローラーがあり、次にそのナビゲーションコントローラービュー用にUITableViewペン先が設定されています。これらはすべてIBを通じて設定されており、私はそれを維持したいと思っています。このチュートリアルhttp://twilloapp.blogspot.com/2009/05/how-to-embed-navigation-controller.htmlのよう に、ViewDidLoadが呼び出されたときにビューが完全に読み込まれるようになりました。しかし、コードIEを介してさらにビューをロードすると
ナビゲーションツールバーを使用して戻ろうとすると、以前のビューに正常に戻ります。戻ったときにテーブルビューを更新する必要がありますが、呼び出しviewDidAppear
が機能しません。
UINavigationDelegate
テーブルビューと同じクラスに追加してからViewController
呼び出してみました- (void)navigationController:(UINavigationController *)navigationController didShowViewController:
しかし、それはうまくいきませんでした。また、タブバーコントローラーと同じデリゲートを追加してnavigationController didShowViewController:
そこに追加しようとしましたが、それも失敗しました。
ビューが読み込まれるたびにこのテーブルを更新するにはどうすればよいですか?
iphone - viewDidAppearのUIViewにアニメーションを追加するには?
viewDidLoad と viewDidAppear にアニメーションを追加しようとしましたが、うまくいきません:
なんで?
iphone - ViewDidAppear を 1 回だけ呼び出すにはどうすればよいですか?
ユーザーがアプリを起動すると、stockholm.xib が表示され、ここで実行されます。
ただし、ユーザーが以下を使用してstockholm.xibを閉じると:
アニメーションが完了すると、アプリがクラッシュします。その理由は、viewDidAppear が 2 回呼び出されるため、最近閉じた xib ファイルを開こうとしているからだと思います。
さて、一度だけ表示されたビューを呼び出すにはどうすればよいですか? ユーザーがストックホルムから戻ってきたときにviewDidAppearが呼び出されないようにするには? 他の解決策はありますか?
ありがとう:)
iphone - ViewDidAppear、ViewDidLoad、ViewWillAppear、コンストラクターにサブビューをプログラムで追加しますか?
私は、Apple の大ざっぱなドキュメントから、Views コントロールを初期化してコントローラーのビューに追加するのに最適な方法を見つけようとしています。
winforms を使用すると、常に内部で初期化InitializeDesigner
され、コンストラクターで呼び出されるため、かなり簡単です。可能であれば、このパターンの信頼性を一致させようとしています。
ほとんどの場合、私は一緒にUIViewControllers
、そしてUITableViewControllers
内部で作業しUINavigationController
ています-これがすべてに影響する場合。
次に例を示します。
いくつかの UIControl を別の場所でビューに追加すると、さまざまな結果が得られます。視覚的な遅延が発生することもあれば、Web ビューがどこかに隠されていることもあります。
それらを追加するための一般的な規則はありますか?
iphone - iPhone が揺れる問題: viewController の読み込み時に viewDidAppear が呼び出されない
私はiPhoneデバイスで揺れを検出しようとしているので、私が読んだことについては、ビューコントローラーをviewDidAppearメソッドのファーストレスポンダーとして設定する必要があります。このメソッドは自動的に呼び出されるはずですが、何らかの理由でこのメソッドが呼び出されません。viewDidLoad のみが呼び出されます。
これは私のコードです(関連する部分のみを配置します):
BuildHouseViewController.h:
@interface BuildHouseViewController : UIViewController {
BuildHouseViewController.m:
viewDidAppear メソッドにブレークポイントを追加しましたが、呼び出されません。シェイクが検出されないのは、このメソッドが呼び出されないため、View Controller がファーストレスポンダーにならないためだと思います。なぜこれが起こっているのかわかりません。
どんな助けでも大歓迎です。
編集:
次を使用して、別のビューからビューを呼び出します。
ビューが画面に表示されます
uiactivityindicatorview - 行データがフェッチされている間のテーブル ビューでのアクティビティ インジケーターの表示
tableview1.row から、大量の行がフェッチされている tableview2 に移動しています。ロード時間が約 3 秒であることを考えると、tableview1.row が選択されるとすぐにナビゲーションが tableview2 にスライドし、データがフェッチされて基になるテーブル ビューにレンダリングされる間、tableview2 の上に UIActivityIndicatorView を表示する必要があります。tableview2 は実際には親 UIView のサブビューであることに注意してください (親が UITableView であるのとは対照的です)。
この投稿を見ました: UITableView1 から UITableView2 に移動するときに、アクティビティ インジケーターを表示する必要があります。
... これは、データ フェッチに関するアクティビティ インジケーターの start および stopAnimating 呼び出しを tableview2 の viewDidLoad に追加するように指示します。
つまり、tableview2が目に見えてスライドする前にviewDidLoadが実行されて完了すると、上記のソリューションがどのように機能するかわかりません。
これとは別に、IB の tableview2 にアクティビティ インジケーターを追加してみました。また、IBOutlet インジケーターの開始/停止アニメーション コードを viewDidAppear に追加しました。何が起こるかというと、データ フェッチが実行され、インジケーターが回転していることがわかりますが、フェッチの最後にテーブル ビューが空になります。cellForRowAtIndexPathなどがすでに起動しているため、viewDidAppearが遅すぎてテーブルビューにデータを追加できないようです。
誰でもポインタを提案できますか? ここで明らかな何かを見落としている可能性が非常に高いです (私がいる場所は午前 5 時近くで、脳がドロドロしていると思います)。viewDidAppear から cellForRowAtIndexPath などを再トリガーする必要がありますか? テーブル ビューが親ビューではなくサブビューであるという問題はありますか?
ありがとう
iphone - 「viewDidLoad」を使用すると、viewController が表示されるまでに時間がかかります。
ビューコントローラーをロードするとき、ビューを初期化するために「viewDidLoad」メソッドを使用しましたが、ビューが表示されるまでに時間がかかります。ビューに関する情報は、ビューをプッシュするたびに (これは正常です)、またはビューにポップするたびに (そして私の問題があります) メモリにロードされるようになりました。