У меня был UIActivityIndicatorView, работающий отлично в симуляторе и других устройствах 3.0 в моем приложении. Но я узнал, что он не вращался (или не показывался) в новом iphone 4. В принципе, мне нужно показать индикатор активности, когда нажимается кнопка, и скрыть ее, когда событие нажатия кнопки завершено. Я использовал подход ниже.Еще один вопрос о показе UIActivityIndicator
[NSThread detachNewThreadSelector: @selector(spinBegin) toTarget:self withObject:nil];
из этого link. Как уже упоминалось, он правильно вращает индикатор активности на всех, кроме 4. * .. не уверен, почему. Чтобы обойти эту проблему, я последовал другой подход что-то вроде (от developer.apple.com)
` (IBAction) syncOnThreadAction: (идентификатор) отправитель
{
[self willStartJob];
[self performSelectorInBackground:
@selector(inThreadStartDoJob:)
withObject:theJobToDo
];
}
(пустоты) inThreadStartDoJob: (ID) theJobToDo
{
NSAutoreleasePool * pool;
NSString * status;
pool = [[NSAutoreleasePool alloc] init];
assert(pool != nil);
status = [... do long running job specified by theJobToDo ...]
[self performSelectorOnMainThread:
@selector(didStopJobWithStatus:)
withObject:status
waitUntilDone:NO
];
[pool drain];
}
`
Проблема с этим было то, что он показывает acitivityVIewIndicator спиннинг правильно (по крайней мере, на тренажере), но после того, как он останавливается, встроенный индикатор активности в верхней панели (где он показывает батарею% и т. д.) все еще вращается.
Я новичок в объекте C. Я полностью закончил свое приложение, но для этой глупой вещи. Я понимаю, что нет возможности отображать UIActivityView без запуска другого потока. и, наконец, просто для того, чтобы говорить, я не понимаю, почему они должны сделать это настолько сложным. Я имею в виду, они знали, что это будет иметь эту проблему, почему бы не предоставить образец кода, который каждый может использовать, а не выводить свои собственные решения.
И, наконец, кто-нибудь может предоставить мне направление или образец кода. Я был бы очень признателен. Я искал несколько часов и не нашел ничего действительно работающего!
Последняя строка кода, которую вы упомянули, [activityIndicator performSelectorOnMainThread: @selector (stopAnimating) withObject: nil waitUntilDone: YES]; Вы имели в виду [SELF performSelectorOnMainThread: @selector (stopAnimating) withObject: nil waitUntilDone: YES]; если это так, это именно то, что я делаю, и, похоже, работает, за исключением индикатора активности в верхнем баре.Я не знал, что он основан на сетевой активности, позвольте мне взглянуть. –
Я приму этот ответ. Я закончил работу с [UIApplication sharedApplication] .networkActivityIndicatorVisible = NO; , чтобы не показывать индикатор сети. У меня есть сетевая активность, но все они завершены к моменту вызова метода stop. Не совсем уверен, что там происходит. –