みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

CocoaのNSTableViewについて

CocoaのNSTableViewについて

CocoaのNSTableViewではまっています。

<環境>
OS: Mac OS X(10.5.8)
XCode: 3.0 (IDE: 921.0, Core: 921.0, ToolSupport: 893.0)

以下の手順で作業をしました。
(1) Interface Builderで「ライブラリ」から、「Object」をMyDocument.nibにドラッグ&ドロップし、
クラス名をMyControllerとする
(2) 上記MyControllerをクラスファイルに出力(メニューから「File」ー「Write Class File」)
(3) ウィンドウにテーブルビューを配置して、データソースをMyControllerに接続
→ テーブルビューの右クリックで「Outlets」ー「dataSource」が「MyContoller」になっている
(4) テーブルビューの識別子を設定する
「Table Column Attribute」の「Identifier」で設定
→ とりあえず「Column1」,「Column2」とする(2列設定)
(5) XCodeで、MyControllerに以下を実装(ヘッダは省略)
- (NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView
{
return 1;
}

- (id)tableView:(NSTableView *)aTableView
objectValueForTableColumn:(NSTableColumn *)aTableColumn
row:(NSInteger)rowIndex
{
if([[aTableColumn identifier] isEqual:@"Column1"]){
// 1列目
return @"AAAA";
}
else
{
// 2列目
return @"BBBB";
}
}

※参考URL
http://take-blizzard.cocolog-nifty.com/blog/2009/02/cocoanstablevie.html

こうすると、Windowが表示されたときに、テーブルビューに1行「AAAA, BBBB」という行が表示されると思っていますが
表示がなされませんでした。
「Document based Application」で作成していますが、新しいウィンドウを開いても何も表示されません。
また、aTableViewにブレークポイントを張っていますが、止まることはありませんでした。


上記に関して以下の質問です。
<1> AppControllerの実体(インスタンス?)は、データソースの接続を行っているので自動で生成されるということでよいのでしょうか?
それとも、どこかで自分でallocが必要でしょうか?
<2> 上記のようにデータソースとして接続したクラスの中でブレイクポイントで止めることは可能でしょうか?

そのほか、上記でおかしい点/作業の不足点があればご指摘いただけないでしょうか?

以上、よろしくお願いいたします。

投稿日時 - 2010-06-06 07:22:48

QNo.5948099

すぐに回答ほしいです

質問者が選んだベストアンサー

どこにも問題はないように見受けられます。
おそらく、スペルミスとか、Interface Builderで接続しているつもりだったものが、できていないとか、そういうイージーミスが、思い通りに行かない原因ではないでしょうか?

正常なプログラムなら、ブレークポイントも、ちゃんとそこで止まってくれますよ。

投稿日時 - 2010-06-06 17:47:25

補足

再度確認してみましたが、やはりNGでした。

確認の結果
・MyController の親クラスがNSTableViewだったので、NSObjectにしました。

接続も、上記の通り「Outlets」の項目で接続を確認しました。

スペルミスについてですが、例えば列のIdentifierが誤っていたとしても、tableViewメソッドでelse節に落ちるので「何も出ない」という状況にはならないのでは?と考えています。

その他に、「この辺確認してみろ!」というようなアドバイスがあればご教示いただけますでしょうか?
よろしくお願いいたします。

投稿日時 - 2010-06-08 22:35:07

ANo.1

このQ&Aは役に立ちましたか?

5人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問