問題タブ [nib]
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.
xcode - Xcodeにペン先のコンパイルをスキップさせる
私は、人々がペン先などを編集できるように、「ハッカー互換」でなければならないアプリケーションを作成しています。ただし、パッケージの内容を表示すると、ニブがコンパイルされているため、IBで開くことができません。Xcodeがペン先をコンパイルしないようにする方法はありますか?
ありがとう
iphone - 複数のViewControllerで使用できるビュークラスが関連付けられたペン先を作成するにはどうすればよいですか?
私は私の最後の質問をフォローアップするために新しい質問を開いています(サブビューを追加した後のsuperviewとparentviewcontrollernil)。基本的に、サブビューを使用することは良い考えですが、別のViewController内にあるサブビューを制御するViewControllerを使用するべきではありません。基本的に私は次のことをしたいと思います...私は共通のサブビューを共有する2つのViewControllerを持っています。そのサブビューをSearchDate.xibというペン先として作成しました。ファイルの所有者は、対応するクラスSearchDateView.m/hです。そのクラスには、ラベルであるnibのUIView内の唯一の要素のアウトレットがあります。SearchDateViewクラスには、SearchDateView.xibのラベルの値を変更するための関数もあります。両方のViewControllerにこのペン先をロードしたいのですが、どうやらペン先を適切にロードする方法がわかりません。私が何をしても、せいぜい何も表示されず、最悪の場合、例外がスローされます。アップルのドキュメントでは、IB内のクラスの他のインスタンスをメインビューにドラッグすることについて説明していますが、それはうまくいかないようです。ViewControllerにSearchDateViewアウトレットがあり、コントローラーのロードビューでこれを実行してみました。
しかし、私はこの例外を受け取ります:
私は完全に間違ったことをしていることを知っていますが、ペン先、そのペン先のオブジェクトの一部を更新する関連付けられたビュークラスを持ち、そのペン先を別のコントローラーで再利用する正しい方法は何ですか?
編集:コメントを考えると、おそらくこれは十分に明確ではありませんでした。ビュー全体に同じnibファイルを使用したくはありません。サブビューではありません。たとえば、コントローラーAにはマップとSearchDateViewがあり、コントローラーBにはテーブルビューとSearchDateViewがあります。だから私はサブビューを複数のコントローラーにロードする方法を考えています...
objective-c - NSViewController はバインディングのメモリ リークをどのように回避しますか? 【サンプルアプリあり】
私は独自のバージョンの NSViewController を実装しようとしています (後方互換性のため)、バインディングで問題が発生しました: バインディングはターゲットを保持するため、ファイルの所有者を介してバインドするたびに円を保持します。
だから私はスーパービューからビューを明示的に削除し、トップレベルのオブジェクトを解放するだけでよいと考えました。これでバインディングが処理されます。これは、コントローラーがビューを保持していないためです。どこかに行って。しかし、何らかの理由で、私のビュー コントローラーはまだ解放されません。問題を示すサンプルアプリを次に示します。
http://dl.dropbox.com/u/34351/BindingsLeak.zip
ビルドして起動し、Cmd-K (「編集」メニューの「ニブの作成」) を押して、空のウィンドウに NIB をロードします。Cmd-K をもう一度押して、最初のビュー コントローラー (TestNibOwner) を解放し、新しいビュー コントローラーをロードします。ただし、古いView Controllerの割り当てが解除されることはありません。
チェックボックスの「値」バインディングを削除すると、問題なく解放されます。
release/retain/autorelease のオーバーライドにブレークポイントを設定すると、_NSBindingInfo が TestNibOwner を保持していることがわかりますが、リークの場合には決して解放されません。
誰でもこれを修正する方法を知っていますか?
iphone - IBOutletsの数を保持する
コーディング中に、IBOutletsの保持カウントに関する同じ質問が出てきました。NIBからオブジェクトをアーカイブ解除した後、カウントを保持しますか?IBOutletに@propertyを使用するのはいつですか?設定中に保持または割り当てますか?MacとiPhoneの違いは?
そこで、AppleのドキュメントからThe Nib ObjectLifeCycleを読みました。MacとiPhoneのいくつかのテストアプリは私にいくつかの奇妙な結果を与えました。それでも、コーディング中に満足するためにこの問題を処理する方法をいくつか書き留めましたが、コミュニティに確認して、あなたの意見や経験に耳を傾けたいと思いました。
- トップレベルオブジェクトのIBOutletを常に作成します。必要に応じて非トップレベルオブジェクトの場合(アクセスが必要)。
- IBOutletsには常に次のプロパティを提供します(必要に応じて解放します)。
- Macのトップレベルオブジェクト:
- @property(nonatomic、assign)IBOutlet SomeObject * someObject;
- @synthesize someObject;
- [self.someObjectリリース];
- Macのトップレベル以外のオブジェクト(リリースなし):
- @property(nonatomic、assign)IBOutlet NSWindow * window;
- @synthesize someObject;
- iPhoneのトップレベルオブジェクト(保持する必要があります):
- @property(非アトミック、保持)IBOutlet SomeObject * someObject;
- @synthesize someObject;
- [self.someObjectリリース];
- iPhoneのトップレベル以外のオブジェクト(保持する必要があります):
- @property(非アトミック、保持)IBOutlet UIWindow * window;
- @synthesizeウィンドウ;
- [self.windowリリース];
- Macのトップレベルオブジェクト:
サイドノート:
- MacおよびiPhoneでは、可能な場合はセッターを使用してコンセントに接続します。
- トップレベルオブジェクト:「所有オブジェクトがありません[...]」
- 非最上位オブジェクト:「ビュー階層内にネストされたビューなど、親オブジェクトまたは所有オブジェクトを持つオブジェクト」。
したがって、質問は次のようになります。これは正しくて良い習慣ですか?
承認または修正していただければ幸いです。
iphone - アプリのメイン xib をロードするための viewDidLoad のようなものはありますか?
アプリのInfo.plistの「メインnibファイルベース名」で定義されたものと同様。私はちょうど使用する必要がありますapplicationDidFinishLaunching
か?
iphone - オブジェクトがペン先からロードされるか、プログラムで作成されるかにかかわらず、初期化コードを実行する正しい方法は何ですか?
ペン先から接続されたビューをロードする場合、指定された初期化子が呼び出されないために初期化コードを追加する場合(これは理にかなっています)、およびビューをロードしない場合は、initWithCoderをオーバーライドする必要があることに気付きましたペン先から、指定された初期化子で同じコードを実行する必要があります。
したがって、両方のケースを処理するには、両方のメソッドで同じ初期化コードが必要です。
これは私がこれまでに思いついた最善の解決策ですが、これを行うためのより一般的な方法があるかどうか疑問に思う必要があります。このコードはUITableViewCellサブクラスにありますが、実際には任意のUIViewである可能性があります。
それで、これについて何か考えはありますか?これは物事を行うための「正しい方法」ですか、ここに潜在的な落とし穴がありますか、それとも私は何かを完全に見逃していますか?
cocoa - Cocoa: NIB ファイルにリンクされたコントローラー クラスのインスタンスを作成するのは何ですか?
これは、Cocoa NIB ファイルの内部動作と、それらをサポートするフレームワーク クラスに関する質問です。
便利な例については、Apple Currency Calculator チュートリアルをご覧ください: http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/ObjCTutorial/01Introduction/01Introduction.html
MainMenu.nib ファイルを開くと、「Converter Controller」を表すオブジェクトが表示されます。
アプリが実行されると、ConverterController クラスのインスタンスがアプリ内の何か (NIB 内の何か、または NIB をサポートするフレームワーク) によってインスタンス化されます。
(これを、ConverterController のコードによって作成されたインスタンスを持つ別のクラス、Converter と混同しないでください。)
私の質問は、ConverterController のこのインスタンスを作成するのは何ですか? NIB のデフォルトの File's Owner オブジェクトですか? インスタンスを作成するオブジェクトが何であれ、そのオブジェクトが使用するコードは何ですか? NIB またはフレームワークのどこかに次のようなメソッド/関数が必要です。
そのコード、ConverterController インスタンスを作成するために現在使用されている特定のコードを確認したいと思います。
ConverterController インスタンスの代替を作成する方法や、NIB ファイルに関連するクラス インスタンスを手動でインスタンス化する一般的な方法を知りたくありません。
iphone - IB はどのように UIImage をロードしますか: imagedNamed と imageWithData?
UIImage のメモリ管理を読んだ後、インターフェイス ビルダーが UIImage をロードする方法が気になりました。UIImage:imagedNamed または UIImage:imageWithData を使用していますか?
iphone - アプリケーションの最初の起動時にのみ nib ファイルを呼び出すにはどうすればよいですか?
私はここで初めてですが、iPhone SDK をよく学びたいと思っています...
アプリの起動時に modalView コントローラーを表示したい iPhone アプリを作成しています... どうすればこれを行うことができますか?
この modalView では、いくつかの情報を要求します。ビューは、これらの情報が保存されていない場合にのみ表示される必要があります。
誰でも私を助けることができますか?
PS: 英語が下手で申し訳ありませんが、私はイタリア人です... :D ありがとうございます!