Добавить / удалить строки в / из NSTableView в Objective-C - PullRequest
7 голосов
/ 20 августа 2009

Я делаю простое приложение Todo в Какао. Я добавил класс (и объект NSObject в XIB) MATodoController:

MATodoController.h

#import <Cocoa/Cocoa.h>


@interface MATodoController : NSObject
{
    IBOutlet NSTableView *table;
}

- (IBAction)addItem:(id)sender;
- (IBAction)removeItem:(id)sender;

@end

MATodoController.m

#import "MATodoController.h"


@implementation MATodoController

- (void)addItem:(id)sender
{

}

- (void)removeItem:(id)sender
{

}

@end

У меня есть выход «table» для NSTableView и два действия «addItem» и «removeItem», вызываемые нажатием кнопки.

Есть ли способ (конечно, есть способ) Как добавить новые строки / удалить выбранные строки в и из NSTableView (пользователи могут выбирать несколько строк одновременно)?

Заранее спасибо.

О, еще одна вещь: NSTableView имеет только один столбец (который состоит из флажков).

Ответы [ 2 ]

9 голосов
/ 20 августа 2009

В Какао вы не добавляете / не удаляете строки непосредственно в NSTableView. В вашем контроллере вы можете захотеть принять протокол NSTableDataSource, который имеет 2 важных метода, которые необходимо реализовать, чтобы это работало:

- (int) numberOfRowsInTableView:(NSTableView *)aTableView
- (id) tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex

Эти методы будут отвечать на сообщения, которые табличное представление отправляет в свой источник данных (настроенный в Интерфейсном Разработчике), чтобы заполнить таблицу строками данных. В этих реализациях метода вам придется возвращать информацию, которая требуется методу (количество строк; значение ячейки в конкретной строке), запрашивая любое хранилище данных, с которым вы работали.

Ваши методы addItem и removeItem также должны будут хранить / удалять данные строк (в любом представлении, которое вы придумали). Вы можете создать новый класс, который представляет каждую строку, и сохранить их, например, в NSMutableDictionary.

Помимо документации Apple, есть хороший учебник для этой задачи.

Удачи!

2 голосов
/ 20 августа 2009

С Какао самый простой способ сделать это с привязками. Создайте NSArrayController, связанный с экземпляром NSMutableArray, и привяжите NSArrayController к NSTableView.

CocoaDev дает хороший обзор процедуры . Вы также можете прочитать документацию Apple и превосходную статью CocoaDev о привязках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...