※ ChatGPTを利用し、要約された質問です(原文:CocoaのNSTableViewについて)
CocoaのNSTableViewの使い方と問題解決方法
この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> 上記のようにデータソースとして接続したクラスの中でブレイクポイントで止めることは可能でしょうか?
そのほか、上記でおかしい点/作業の不足点があればご指摘いただけないでしょうか?
以上、よろしくお願いいたします。
補足
再度確認してみましたが、やはりNGでした。 確認の結果 ・MyController の親クラスがNSTableViewだったので、NSObjectにしました。 接続も、上記の通り「Outlets」の項目で接続を確認しました。 スペルミスについてですが、例えば列のIdentifierが誤っていたとしても、tableViewメソッドでelse節に落ちるので「何も出ない」という状況にはならないのでは?と考えています。 その他に、「この辺確認してみろ!」というようなアドバイスがあればご教示いただけますでしょうか? よろしくお願いいたします。