問題タブ [nsnotification]
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.
ios - 通知を使用したUITableView編集?
編集/完了ボタンのある UITableView があります。編集モードに入ったら、いくつか変更を加えたいと思います。現時点では、setEditing:animated を上書きしましたが、怪しいようです。tableView が編集モードに入ったときに送信される通知はありますか、それとも setEditing に固執する必要がありますか?
core-data - クラッシュの原因となるawakeFromFetchのコアデータNSNotification
誰かがこれを以前に見たことがあると思いますが、おそらく明らかな何かが欠けています...簡単な要約を次に示します。CoreDataアプリがあり、CarとCarMileageがあり、より正確には車の旅と考えられています(Car < ->> CarMileage)。CarMileageには、マイレージ(float、旅行の長さ)、forWork(BOOL)などのいくつかの属性が含まれています。mileageForWorkを含むカスタムCarMileageクラスを作成しました(float、forWork = YESの場合はマイレージを返し、forWork = NOの場合は0を返します)。また、+keyPathsForValuesAffectingMileageForWorkがマイレージとforWorkのセットを返すようにしました。次に、その年の特定の車の合計percentMileageForWorkを計算する必要があります。
現在私はCarMileageにいます:
それから車は持っています:
自動保存されたファイルがロードされると、CarおよびCarMileage用のNSArrayControllerを含むVehiclesセクションに移動します。ログには、「通知の送信」、percentMileageForWorkの値、および「awakeFromFetch」が表示され、プログラムが一時停止し、XCodeのスレッドタブがszone_malloc_should_clear、EXC_BAD_ACCESSコード=2でポップアップ表示されます。
なぜこれが起こっているのか、私は完全に迷っています。私の経験の浅い目には、問題は通知をどこで観察すべきかということです。結局のところ、投稿はログになります。なぜクラッシュするのか、何か考えはありますか?
編集(10月14日) -CarMileageの-awakeFromInsert
およびで、オブジェクトがそれ自体のオブザーバーとしてCarを追加するように、キー値監視モデルに変更しようとしました。-awakeFromFetch
これはフェッチでは期待どおりに機能しますが、オブジェクトが挿入されると、-updatePercentMileageForWork
メソッドは起動しません。オブザーバーが追加されたときに、CarとCarMileageの関係がまだ設定されていないためと思われます(したがって、実際にはオブザーバーはまったく設定されていません)。移動する方法があると思います-addObserver:forKeyPath:options:context
新しいCarMileageオブジェクトをリレーションシップセットに追加するメソッド内でCarを呼び出すので、その問題は発生しません。おそらく高度に最適化されているCoreDataの独自のコードをいじるべきかどうかわからないだけでなく、そのコードがどのように正常に読み取られるのかわからないため、関係を完全に台無しにすることを心配しています。「mogenerator」について聞いたことがありますが、ドキュメントが見つからず、すでに混乱しているときによくわからない別のプログラムを使用するのは少し不快です...
誰かが私がどこ-addObserver:forKeyPath:options:context
から電話をかけるべきか知っていますか、そしてそれが関係が設定されている場所からであるならば、私はそれをどのように行うでしょうか?または、通知を使用して、これを意図した元の方法で行うにはどうすればよいですか?
video - MPMoviePlayerController は、再生終了後にムービーを自動的に閉じません (ios 6)
タイトルの言い方がよくないかもしれませんが、再生が終わった後、NSNotification が映画のビューを閉じていないと言ったほうが正しいかもしれません。この問題を抱えている他の人を見つけましたが、解決策はありません。私が実行している iOS 6 に問題があるようです。
ビデオの再生が完了したら、「完了」を押して閉じる必要がありますが、これが整理されたら MPMovieControlStyleNone を使用するため、自動的に閉じたいと思います。未使用のセクションを取り除いた私のコードは次のとおりです。
objective-c - UIViewController が現在表示されているかどうかを確認するにはどうすればよいですか?
UIViewController
が現在表示されているかどうかを確認するにはどうすればよいですか?
私UIViewControllers
はリッスンしてNSNotifications
います-たとえそれらが表示されていない場合でも(つまり、表示されていません)。したがって、からUIViewController
バックグラウンドで 10 を監視できます。が に投稿および受信されたときに、現在表示されているかどうかを確認したいと思います。そうでない場合は、ブール値を設定して、ビューが表示されたときに処理されるようにします。現在表示されている場合は、すぐにテーブルを更新するなど、さらに多くのことを行います...NSNotifications
NSNotificationCenter
NSNotification
UIViewController
objective-c - removeFromSuperview が映画のサブビューを削除しないのはなぜですか? Xcode
「完了」ボタンを押さなくても、再生して自動的に閉じるムービーを取得しようとしています。チュートリアルに正確に従っているため、これは最近の iOS 6 の問題だと思います。これが私のコードです、助けてください:
iphone - NSNotificationでテキストフィールドが更新されていません
私は簡単なチュートリアルを行っており、NSNotification
それを適切に実行する上でいくつかの問題に直面しています。最初のビューのボタンをクリックしても、2番目のビューのテキストフィールドが更新されません。にを入れてデバッグするNSLog
とreceiveNotification
、応答がありません。receiveNotification
が呼び出されていない理由がわかりません。
コードは次のようになります。
ViewController.h
ViewController.m
SecondViewController.h
これに関するガイダンスが必要です。
objective-c - ポップオーバーからの眺めをリフレッシュする
Xcode 4.5を使用しており、iOS5以降をターゲットにしています。
ユーザーが基になるビューの背景を変更できるポップオーバーがあります。
「ボタン」をタップするときは、2回タップして変化を確認する必要があります。
私はを使用してNSNotification
います。委任を試しましたが、何もしません。
ヘルプやヒントをいただければ幸いです。
viewWillAppearから:
そして選択の方法:
NSNotificationメソッド:
objective-c - NSNotification / NSEvent がどのアプリケーションから来たかを認識する方法はありますか?
keyDown
グローバルなイベントを聞き始めました。イベントが発生したアプリケーションから情報を取得する方法はありますか?
ハンドラーはNSNotification
インスタンスを受け取り、NSEvent
その一部です。どうにかしてそれらのオブジェクトからその情報を抽出できますか?
リスニング スニペット:
観察者:
アップデート
グローバル キー ダウンは、特定のアプリケーションからは送信されません。実際に必要だったのは、イベント ハンドラーで現在アクティブなアプリケーションを確認することです。
これにより、必要な情報が返さNSDictionary
れます。
objective-c - Objective-Cで同じ名前のクラスメソッドとインスタンスメソッド
通知の問題はうまく機能する解決策がありますが、悪い考えかもしれません。
クラスの各インスタンスとクラス自体で処理する必要がある通知があります。これを処理するために、クラスとクラスのインスタンスの両方による通知を登録しています。まったく同じ通知なので、クラスとインスタンスのメソッドに同じ名前を付けました。これは、通知ハンドラーの命名方法について設定した標準に従います。
これは悪い考えですか?私が行方不明になっている隠されたものはありますか?私は将来の開発者を混乱させるでしょうか?
grand-central-dispatch - iOS GCD と NotificationCenter を使用して、非同期データの読み込みが完了したときにユーザーに警告する (一度に複数のデータセットの非同期読み込み)
複数階建ての建物のデータを非同期にロードする iPad アプリを作成しています。すべてのフロアのデータロードが完了したら、ユーザーに警告するように NSNotifications を設定しました。
ChildViewController (ポップアップ VC) でロード ボタンが押されると、各フロアのデータ ロードがループで開始されます。
ChildViewController は ParentViewController から起動されます。
「dataloaded」という名前の通知用に ChildViewController にオブザーバーを追加し、通知を処理するためのハンドラー関数 childDataLoaded を設定します。
ChildViewController はデータのロードが完了する前に却下される可能性があるため、ParentViewController にオブザーバーとハンドラー (parentDataLoaded) をセットアップして、同じ「データロード済み」通知を処理します。
AppDelegate にデータ ロード関数 'parseAndSaveData' を実装しました。parseAndSaveData は、ChildViewController ボタンがクリックされると呼び出されます。パラメータとしてフロア識別子 (NSString) を取ります。Web サービスを呼び出してそのフロアのデータを取得し、このデータをデータベースにロードします。Web サービスは高速ですが、データを sqllite データベースに追加するには時間がかかります (コア データを使用しています)。したがって、dispatch_asynch 呼び出しを使用してこのデータロード部分を呼び出します (これが最も時間のかかる部分であるため)。
完了すると、データロード部分は「データロード済み」通知を送信します。
この通知は、ChildViewController または ParentViewController (通知が投稿されたときにアクティブな方) のいずれかのハンドラーを呼び出すことを期待しています。
私が抱えている問題は、通知が予測不可能であり、すべてのフロアが正常にロードされるという事実にもかかわらず、1 つのハンドラー (ChildViewController 内のハンドラー) のみが呼び出され、1 つのフロアに対してのみ呼び出されることです。
上記の設計と実装または代替案に関するアドバイスをいただければ幸いです。
@Samuel からの dispatch_group 提案のコードを追加