Я разработчик LAMP, но новичок в Cocoa и создании настольных приложений в целом.Всю неделю я играл с XCode и IB, создавая простой диспетчер задач, чтобы изучить основы и освоиться с Objective-C.Закончено большинство учебников по cocoadevcentral, пролистываю Apple Docs и читаю Программирование какао для Mac OSX.
Я успешно построил DataModel (с использованием Core Data), пользовательский интерфейс с 2 NSTableViews (проекты и задачи)), добавьте / удалите кнопки для обоих TableViews и подключите привязки между NSArrayControllers и TableViews.Я могу добавлять проекты и задачи в каждом проекте.Работает как очарование.
Модель данных:
- Проект: имя_проекта, задачи (отношения)
- Задача: имя-задачи, estDuration, dueDate, статус, проект (отношения))
Я просто что-то упустил.Я спотыкался о том, как программно изменить элементы пользовательского интерфейса перед рендерингом и когда пользователь нажимает на строки или столбцы в NSTableViews.Я знаю, как создать класс в XCode и связать его как делегат в IB.Кажется, немного ограничен в том, что я могу ответить.Я подклассифицировал сущность проекта в модели данных, чтобы попытаться обнаружить вставки и удаления из NSTableView, но, похоже, это неправильный способ сделать это.
Подкласс, с которым я тестировал:
// ProjectManagedObject.h
#import <Cocoa/Cocoa.h>
@interface ProjectManagedObject : NSManagedObject {
}
@end
// ProjectManagedObject.m
#import "ProjectManagedObject.h"
@implementation ProjectManagedObject
- (void)awakeFromInsert
{
[super awakeFromInsert];
NSLog(@"new project inserted");
}
- (void)awakeFromFetch
{
[super awakeFromFetch];
NSLog(@"project awakeFromFetch");
}
- (BOOL)validateForDelete:(NSError **)error
{
NSLog(@"project: validating for delete");
return YES;
}
@end
Мне также известны уведомления и принципы их работы.Просто еще не проверял их.Но мне интересно, что мне нужно делать дальше (делегаты, уведомления, подкласс, ??), чтобы получить доступ к объекту пользовательского интерфейса из класса, который я создал, для выполнения некоторых из следующих действий:
- Передданные отображаются, отформатируйте продолжительность для каждой задачи.Пример: от int "30" (модель данных) до строки "30m" (отображается в столбце таблицы)
- Нажмите на длительность задачи для редактирования.Введите 2 часа и нажмите Enter.Затем 2h преобразуется из 2h в 120 для хранения в Core Data.
- Добавление нового проекта добавляет новый проект (делает это уже) в его NSTableView, но затем помещает фокус на новую строку и делает еередактируемые.
Любые идеи о направлении, которое мне нужно выбрать сейчас, и / или о способах преодоления некоторых из вышеперечисленных, очень приветствуются.Спасибо.