Как часть приложения Mac, над которым я работаю, пользователь заполняет экран, заполненный всем, и затем нажимает кнопку «процесс». Выполняются правки, и если все проходит редактирование, выполняется несколько минут, которые либо заканчиваются нормально, либо нет. Я хотел бы, чтобы этот процесс выплевывал серию сообщений о состоянии и обработке в отдельное окно прокрутки, чтобы, если что-то пойдет не так, пользователь мог вернуться к журналу и посмотреть, есть ли там что-нибудь.
Какие объекты и методы для меня лучше всего рассмотреть и использовать для этого типа обработки?
Добавлено 11/24/2011
Согласно первому предложению, я создал второй XIB, создал NSWindowController, чтобы сопоставить его и собрать все вместе в качестве подготовительной работы. Когда кнопка в нажатом в приложении делегате, у меня эта вещь делает следующее:
- (IBAction)runButtonPressed:(id)sender {
RunResultWindow *wc;
wc = [[RunResultWindow alloc] initWithWindowNibName:@"RunResultWindow"];
[wc showWindow:self];
}
RunResultWindow - это имя XIB и класса NSWindowController, который его контролирует. Я также добавил кнопку «Готово» и связал ее с намерением, чтобы результаты процесса заполнили текстовое окно, а затем зависали там, пока пользователь не нажмет кнопку «Готово» или «Завершить», или что бы я ни вызвал, вызывая кнопку.
На самом деле окно отображается, когда я нажимаю кнопку в главном окне, но когда код кнопки заканчивается, окно исчезает. Ясно, что я пропускаю (важный) шаг.
Как только я получаю окно, я могу добавить текстовое представление и т. Д. И заставить это работать. Я хотел бы, чтобы новое окно получило фокус, а затем закрылось, когда пользователь нажимает кнопку «Готово».
Кроме того, я получил окно для оконного контроллера из метода окна (он возвратил адрес) и попробовал несколько методов фокусировки окна в методе windowDidLoad NSWindowController, но без кубиков.
Еще раз спасибо за любую информацию, которую я могу получить по этому поводу.
Добавлено 25.11.2011
Duh. Может быть, если я сделаю экземпляр класса ivar вместо того, чтобы встраивать его в метод button, он будет работать, и да, это так. Le Oops.