問題タブ [cocoa-design-patterns]

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.

0 投票する
2 に答える
112 参照

iphone - 大量のHTTPリクエストを使用するアプリでシングルトンを使用する場合の問題は何ですか?

基本的にすべてのHTTPリクエストをインターフェースするシングルトンクラスがあります。したがって、次のようになります。

悪いですか?シングルトンがモジュール性を壊すと人々が私に言うのはなぜですか?JSON応答で何かを行う必要があり、View Controllerにそれらを処理させたくないので、httpリクエストを実装するのに良い方法だと思います。

0 投票する
1 に答える
224 参照

iphone - タスクがAppDelegateにない場合、バックグラウンドでタスクを完了するにはどうすればよいですか?

私は次の階層を持つアプリを持っています:

ボタンを押すとき、ユーザーは1〜10秒待たなければならない場合があります(インターネット接続によって異なります)。タスクが完了するまで、ユーザーはアプリを終了できます。ユーザーが戻ると、ダウンロードしたコンテンツを表示できるはずです。

applicationDidEnterBackground()を実装する必要があることに気付きました。ガイドを読みましたが、データが別のView Controllerにあるため、アプリのデリゲートに渡すにはどうすればよいかわかりません。アプリデリゲートは、計算を完了するために必要なすべてのデータを持っているわけではありません。さらに、途中でそれをアプリデリゲートに渡すにはどうすればよいですか(完了した作業を失うことなく)?

0 投票する
1 に答える
177 参照

ios - UIViewController を別の UIViewController のプロパティとして設定するのは悪い考えですか?

たとえば、RootViewControllerクラスとクラスがあり、 fromAnotherViewControllerのプロパティを変更する必要があるとします...「RootViewController」プロパティを(そのインスタンス変数にアクセスできるように) 持つことは安全ですか?RootViewControllerAnotherViewControllerAnotherViewController.h

それが良い考えではない場合、誰かが理由を説明できますか?

上記のコードでは、プロトコル/デリゲートを使用して同じことを処理できたことがわかっています。おそらくそうすべきだと思います。しかし、私が読んだ本や他の資料のどれも、これについて実際に議論していません.

私が尋ねている理由は、アプリをユニバーサルにする過程にありUISplitViewController、ユーザーが「詳細ビュー」で変更を加えると、「マスター ビュー」を頻繁に更新する必要があることに気付きました。だから、私は簡単なルートを取り、UIViewControllersプロパティとして設定を開始しました...しかし、追跡が難しいメモリリークと時折のクラッシュが発生しています。「循環参照」について何か読んだことがありますが、それが問題の一部である可能性があるのではないかと思います(UIViewControllersお互いのプロパティとして設定されている場所がいくつかあります)。

これをカバーする参考資料への洞察、またはポインタをありがとう。

0 投票する
2 に答える
10211 参照

iphone - Iphone アプリケーションでカレンダーを作成するには?

メンバーのイベントを記録するために使用されるカレンダーで構成される Web サイト アプリケーションを開発しました。だから、私はiPhoneアプリケーションを開発する必要があります。たとえば、この Iphone アプリケーションは 4 つのタブで構成されており、1 つのタブをクリックすると、私が開発した Web サイト アプリケーションの対応するカレンダーと同じカレンダーが表示されます。

したがって、Iphone アプリケーションでカレンダー ビューを追加または作成する方法を知っている人はいますか?

提案や解決策を本当にありがとう。ありがとう。

0 投票する
1 に答える
637 参照

objective-c - Objective c:モーダルビューのログインフォームからタブバーコントローラービューにデータを戻すためのプロトコル+デリゲート

私はiPhone用のタブバーベースのアプリを開発しています。フローは次のとおりです。アプリを実行すると、ログインフォームを使用してモーダルビューを表示します。

ログインモーダルビューLoginViewController.h(子)にプロトコルが実装されています:

ユーザーがフォームに入力したら、NSURLConnectionを作成し、connectionDidFinishLoadingメソッドでJSONリクエストからユーザー値を取得します。

HomeViewController.h(親)に委任があります:

そして、HomeViewController.mで、Protocolメソッドを実装します。

そして、viewDidAppearメソッドで、LoginViewControllerクラスに実装されているloginSuccessメソッドを呼び出します。

LoginViewControllerクラスに実装されたloginSuccessメソッド:

そして、idJson値をHomeViewController(親)に渡す必要があります。問題は、モーダルビューフォームを閉じると、idJson値が「NIL」であるため、HomeViewControllerでこの値を取得できないことです。代わりにこれを作成した場合:

HomeViewController(親)でhello文字列を取得します何が間違っていますか?

前もって感謝します!!!

0 投票する
2 に答える
441 参照

cocoa - iTunes、iCal、iPhoto などに似た UI レイアウトを作成するための、文書化された標準的な開発パターンはありますか?

私は Cocoa 開発に不慣れで、iTunes、iCal、iPhoto、Billings、1Password、Numbers、Delicious Library などのアプリで共有される「標準」レイアウトと思われるものを使用して UI レイアウトを作成しようとしています。この典型的なレイアウトは、次のように説明できます。

  • 画面の左側にある「ライブラリ」パネルで、通常は階層を発見するためのものです。このパネルは通常、水平スペースの約 4 分の 1 をカバーします。
  • ほとんどの UI インタラクションが行われるライブラリ パネルの右側にある「メイン」パネル。これは残りの水平スペースを取り、iCal の月間カレンダー ビューや、iTunes のアルバム アートとプレイリストのタイルなどを見つける場所です。
  • 画面の左下隅にある「ユーティリティ」パネルで、通常は追加オプションなどに使用されます。

これらのタイプのレイアウトの View クラスと Controller クラスを「接続」する方法に関するベスト プラクティスを示す文書化されたパターンはありますか? たとえば、使用するViewControllerの数、NSDocumentベースのアプローチを使用することが理にかなっているかどうか、いくつかの一般的な落とし穴など? このレイアウトは非常に普及しているため、適切なリファレンスがないように思われることに驚いています。

更新: Apple Developer サイトにアクセスできることを忘れていました。Cocoa のさまざまなクラスのライブラリ リファレンスを見つけることはできますが、すべてをレイアウトにまとめる方法についての適切なリファレンスを見つけることができないようです。説明。

Aaron Hillegass などの本は、Cocoa の基本を学び、単純なインターフェイス (NSDocument に接続されたビューにレイアウトされたいくつかのコントロール) を作成するのに役立ちますが、私が説明する UI レイアウトに導くにはあまり適していません。

ありがとう。

0 投票する
1 に答える
427 参照

iphone - UIToolBar を実装して、同時に UITabBar と UIToolBar のように機能するようにします。

興味深い問題があります。写真を含むアプリを開発しているため、画面スペースが不足しています。また、(カメラアプリのように)消えたり現れたりするナビゲーション/ツールバーコントローラーを使用することは、私には意味がありません。完璧な世界では、UITabBar を使用して、プログラムが実装する 4 つの主要なナビゲーション ビュー コントローラーを切り替えますが、ほとんどの場合、タブ バーのすぐ上にツールバー用のスペースも必要になります。これら 2 つのコンポーネントは、2 つのコンポーネントの間でスペースを取りすぎるため、スペースを節約する方法が必要です。

そこで、ツールバーを使用して、TabBar と ToolBar の両方の機能を実装するというアイデアを思いつきました。ツールバーの左側には、4 つのメイン ナビゲーション ビュー コントローラーにアクセスできる 4 つのボタンがあります。現在ウィンドウ上にあるものは、ボタンが押された状態になります。次に、仕切りがあり、ツールバーの右側には、現在ウィンドウにあるビューに固有のボタンがあります。

とにかく、誰かがこれをどのように実装するかについて賢いアイデアを持っているかどうか疑問に思っていますか?

0 投票する
1 に答える
272 参照

iphone - デリゲートの外からスーパービューを設定するには?

タブバーとして機能するツールバーがある AP の 1 つに奇妙なデザイン パターンがあります。基本的に、このツールバーをすべてのビュー コントローラーに追加します。ツールバー自体には、アプリ内の 3 つの異なるナビゲーション コントローラーへのポインターが含まれています。ツールバー ボタンの 1 つが押されると、現在ウィンドウにあるナビゲーション コントローラーを削除し、ユーザーが選択したものを追加できる必要があります。私の問題は、新しい navcontroller をスーパービューに追加する方法がわからないことです。アプリ デリゲート オブジェクトをインスタンス化して、それに追加しますか? または、アプリのデリゲートからツールバーにポインターをクラス変数として送信する必要がありますか? どんな助けでも大歓迎です。

0 投票する
1 に答える
155 参照

cocoa - 一般的な Cocoa アプリケーション アーキテクチャのプログラミング ガイド

私は、OS X と iOS の両方で、かなりの量の Cocoa プログラミングを行ってきました。そして、物事が一般的にどのように適合するかに関して、何が機能し、何が機能しないかについてかなりの経験を積んできました。ただし、Cocoa アーキテクチャにはまだ明確でない側面がたくさんあります。何らかのガイド/本/その他があるのではないかと考えています。それらのいくつかがどのように機能するかを説明します。

たとえば、最近出会ったもの:

  • NSViewController を設定し、その 'representedObject' を NSArrayController の 'selection' にバインドしてから、UI 要素をその presentedObject にバインドすると、機能しません。なぜだめですか?その状況を処理する最善の方法は何ですか? 私は最終的に NSArrayController をその presentedObject として設定しましたが、それは間違っているようです - それは悪い設計ですか?

他にも、カスタム ビューを最適に設定する方法など、過去に疑問に思ったことはたくさんあります。(私は以前、Interface Builder で空の NSView を作成し、コードでカスタム ビューを作成して、そのビューのサブビューとして設定していました!) Cocoa は信じられないほど柔軟で、同じことを実現する方法はたくさんありますが、明らかに、それらのいくつかは、将来的に問題を引き起こす可能性があります。

Apple 開発者サイトには、時間がなくて調べきれなかった参考資料がたくさんあります。これらの多くは、さまざまなドキュメントでカバーされていると思いますが、サードパーティのリソースが役立つ場合もあります。メインのドキュメントでカバーされていない状況を引き起こすこともあります。何かご意見は?

0 投票する
1 に答える
278 参照

cocoa - ウィンドウの状態に応じてビューの背景色を設定します

多くのアプリ(メールなど)で使用される標準のソースビュースタイルのサイドバーは、ウィンドウがアクティブなときは青みがかった色になり、ウィンドウが非アクティブなときは別の色になります(タイトルバーの状態が変化した後)。

さまざまな理由で、カスタムサイドバーを開発しましたが、それでも背景に同じ効果が必要です。

アイデアはNSView、背景を塗りつぶすカスタムを作成し、それをサイドバーの背景として使用することです。設定したいプロパティ「アクティブ」を指定しました。描画メソッドは、それに応じて2つの異なるグラデーションで四角形を塗りつぶします。

さて、問題は、そのようなビューをウィンドウの状態に接続するための最良の方法は何ですか?