Pull to refresh

Comments 27

Хороший пример. Я думаю, что стоило бы еще расширить его альтернативной версией, без биндингов, дабы показать, как бингинги иногда упрощают работу (впрочем, иногда они ее ой как усложняют).
Думал над этим. Решил оставить только в теории, чтобы не усложнять общее изложение и не запутать таких же новичков, как и я.
«фреймворки вроде Qt… не обеспечивают нативный Look and Feel»

ЧТО?!
— «ЧТО?!»
Джонатан Айв о Qt-приложении для Mac OS X
поддерживаю, все же интерфейс должен быть написан с использованием нативных средств, за что люблю Mac OS X, так это за единый стиль GUI почти всех приложений
Пользуюсь KeePassX, которая как раз написана на Qt. И могу сказать что она ужасна как в плане внешнего вида, так и в плане юзабилити.
Блог называется «Разработка под Apple iOS», а разработка программы под Mac?
Глядя на URL блога (http://habrahabr.ru/blogs/macosxdev/136265/), думаю что macosxdev обозначает общее название для двух этих платформ.
И еще думаю что при разработке под iOS используются те же подходы.
Поэтому статья должна быть интересна и разработчикам под iOS.
Изначально блог был как раз про разработку про мак, iPhone SDK тогда еще даже не вышла, потом по не понятной причине его переименовали (и как верно уже заметил заметили, в URL следы остались), а альтернативы не оставили. Тут уместнее другой вопрос — что тут делают посты про iOS?
Пожалуйста, поправьте или перенесите этот топик таким образом, чтобы читатель ясно понимал — все, о чем здесь сказано имеет отношение к программированию только и исключительно под Mac OS X. В iOS используется совершенно другой подход и иные техники работы с таблицами.
Забыл добавить: спасибо! )
Вам спасибо! Это моя первая статья на хабре!
По-моему что речь идет именно о Mac OS X понятно уже из первого предложения.
Во время публикации этот блог мне показался самым подходящим. Как написал int80h выше этот блог был первоначально предназначен для Mac OS X, потом переименован в iOS. Отсюда и путаница.
Альтернативный вариант — блог Mac OS X, но мне кажется там публикуются статьи не относящиеся к разработке.
Ну я бы не был столь категоричен, в ios тоже можно использовать KVC & KVO
KVC и KVO-то есть. А Cocoa Bindings нет. NSCell, NSArrayController тоже отсутствуют. Не говоря уж о таких критически важных для целевой аудитории таких статей нюансов, как разные имена классов и методов в UIKit и AppKit.

Однако, чего только на свете не бывает. Если научите, как применить KVC и KVO для заполнения данных таблицы без использования делегатов (пусть даже программно, без работы с IB) — буду благодарен.
На счёт биндингов честно, не знаю, надо попробовать, в своих проектах IB не использую. Но тем не менее, на мой взгляд, некоторые пересечения есть, пусть и не такие большие.

А на счёт заполненеия таблицы без делегата, только если использовать какие нибудь надстройки, можно посмотреть в сторону нимбуса, на сколько я помню, он может принимать массив описания ячеек и создавать тайбл вью.
Офигеть! Я больше не верю в случайности!
Я начал изучать Cocoa 2 недели назад и сейчас настал момент изучить Table View для одной цели. 3 дня искал нормальные туториалы на всех возможных ресурсах (developer.apple.com; stack Overflow etc.) Последние 3 дня. И тут на любимом ресурсе такая прекрасная статья.

Извините за текст. Эмоции нахлынули от радости. Надеюсь, правильно меня поймут.
Сам примерно сколько же времени изучаю Cocoa. Пытался разобраться с Table View. И вот вчера ночью придумалось решение. Сегодня решил об этом написать.
Спасибо вам огромное! И статья именно о том, что я искал последние 3 дня. Ни об объектах или работы с фреймворками, а именно Table View. Такое совпадение. Спасибо!
Обязательно пишите еще. Буду с удовольствием читать!
А причем тут Apple iOS? Ведь статья касается только Mac OS.
Хотелось бы увидеть, как реализовать тоже самое, но без использования IB.
Для этого можно использовать класс NSTimer и метод scheduledTimerWithTimeInterval этого класса [5].

Но не нужно. Для данного примера лучше использовать NSWorkspaceDidLaunchApplicationNotification и NSWorkspaceDidTerminateApplicationNotification [4].

Добавляем в applicationDidFinishLaunching:
NSNotificationCenter *wsc = [[NSWorkspace sharedWorkspace] notificationCenter];
[wsc addObserver:self selector:@selector(updateProcessList:) name:NSWorkspaceDidLaunchApplicationNotification object:nil];
[wsc addObserver:self selector:@selector(updateProcessList:) name:NSWorkspaceDidTerminateApplicationNotification object:nil];


Изменяем прототип метода (и сам метод) updateProcessList:
- (void) updateProcessList:(NSNotification*)notification;


Меняем вызов этого метода в applicationDidFinishLaunching на:
[self updateProcessList:nil];


Не забываем отписаться от уведомлений в applicationWillTerminate:
NSNotificationCenter *wsc = [[NSWorkspace sharedWorkspace] notificationCenter];
[wsc removeObserver:self name:NSWorkspaceDidLaunchApplicationNotification object:nil];
[wsc removeObserver:self name:NSWorkspaceDidTerminateApplicationNotification object:nil];
Сразу же хочется сказать спасибо за то, что указываете версию xCode, которую используете.

Когда я начинал разбираться в программировании для mac OS и читал статьи с информацией и примерами приложений сильно терялся от того, что вид моего xCode иногда кардинально отличался от того, который был в примерах, что вызывало у меня ярое негодование. А отличался он всегда, так как переводы на русский выходили с огромной задержкой, да и количество весьма скудное.
При быстром скроллинге списка процессов строки отображаются неверно, повторяются и наезжают друг на друга.
скриншот
image

Ещё у новичков типа меня в Xcode 4.3 могут быть проблемы с этим:
Затем открываем Size inspector и на картинке Autosizing выбираем все элементы — это необходимо, чтобы Table View растягивалась вместе с окном.
Autosizing просто может не отображаться, в этом случае по совету со Stackoverflow нужно в File Inspector (первая вкладка в правом сайдбаре) снять галочку с Use Auto Layout.
Sign up to leave a comment.

Articles