В приложении, которое я создаю, я создал подкласс TerminalController для NSPersistentDocument. В TerminalController есть выход NSProgressIndicator, который подключен к экземпляру индикатора прогресса в главном окне. Индикатор прогресса, который будет обеспечивать определенный прогресс, помещается в класс TerminalController, потому что я хочу, чтобы все мои различные классы использовали при загрузке или загрузке данных с сервера.Доступ к NSProgressIndicator, расположенный в NSPsistentDocument из другого класса
Существует особенно один класс, который часто используется для загрузки изображений - ImageUploader - предположительно, чтобы запускать индикатор прогресса, расположенный в главном окне, и подключаться к TerminalController.
Моя проблема: я не могу понять, как получить доступ к индикатору прогресса в TerminalController из ImageUploader. Я не могу создать экземпляр ImageUploader в главном окне nib и подключиться там, поскольку ImageUploader часто инициализируется и освобождается в коде.
Должен быть способ доступа с любого объекта, о котором я думаю. Одна из моих идей заключалась в том, чтобы сделать индикатор прогресса индикатора глобальным, но я знаю, что с точки зрения структуры неправильно и не рекомендуется.
Я бы очень признателен за любые предложения по этому вопросу
Вот пример моего кода
TerminalController подкласс NSPersistentDocument
@interface TerminalController : NSPersistentDocument{
IBOutlet NSProgressIndicator *loadingIndicator;
}
@property (retain, nonatomic) NSProgressIndicator *loadingIndicator;
@implementation TerminalController
@synthesize loadingIndicator;
- (void)dealloc
{
[loadingIndicator release];
[super dealloc];
}
ImageUploader класс
@interface ImageUploader : NSObject{
...
NSProgressIndicator *progressIndictor; // This is progress indicator that should point to TerminalController progress indicator
}
@implementation CustomXMLRequests
- (void) uploadImage:(NSURL *)withUrl{
...
// How to point to progress indicator that is located in TerminalController that is subclass of NSPersistentDocument
[progressIndictor setUsesThreadedAnimation:YES];
[progressIndictor startAnimation:self];
[progressIndictor setMinValue:0.0];
[progressIndictor setMaxValue:1.0];
}
- (void)connection:(NSURLConnection *)connection
didSendBodyData:(NSInteger)bytesWritten
totalBytesWritten:(NSInteger)totalBytesWritten
totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite{
double prgrs = (double)totalBytesWritten/totalBytesExpectedToWrite;
[progressIndictor setDoubleValue:prgrs];
[progressIndictor displayIfNeeded];
}
Спасибо за отзыв. Я использовал NSNotifications. Он отлично работает – sumofighter666