Frage

Ich versuche, die Aktivitätsanzeige von meiner App Delegierter zu verwalten, auf diese Weise alle meine Ansichten auf das Kennzeichen setzen können. Also, Ich füge es als Subview ‚Fenster‘ und Start / Stopp wie folgt:

- (void)didStartActivity
{
    if( activityIndicator == nil ) {
        activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
        activityIndicator.hidesWhenStopped = YES;
        activityIndicator.center = window.center;
        activityIndicator.transform = CGAffineTransformScale(CGAffineTransformIdentity, 6.0, 6.0);
    }
    NSLog(@"%s: starting the activityIndicator", __FUNCTION__);
    [window addSubview:activityIndicator];
    [activityIndicator startAnimating];
}

Ich sehe die Log-Meldungen, damit ich weiß, der Code aufgerufen wird. Der Indikator ist in der Mitte und 6x die Standardgröße. Allerdings ist die stopAnimating nicht zu stoppen. Das einzige, was ich schließen kann, ist, dass es braucht in den vorliegenden View-Controller ausgeführt werden.

- (void)didStopActivity
{
    NSLog(@"%s: stopping the activityIndicator", __FUNCTION__);
    [activityIndicator stopAnimating];
    [activityIndicator removeFromSuperview];
}
War es hilfreich?

Lösung 3

OK. Ich habe mein Experiment und sicher genug, es funktionierte einwandfrei, wenn ich die Aktivitätsanzeige als Subview von Viewcontroller Ansicht hinzugefügt. Allerdings, wenn ich dann, dass neue simpleton verwendet Projekt zu versuchen, es als ein Subview Fenster auch hat es funktioniert. Offensichtlich ein Fehler in meinem Code und es braucht mehr Kontrolle.

Ich vergibt beide Eimantas mit der Antwort, wie die Debug-Vorstellung in meiner Lösung hilfreich war.

Andere Tipps

Versuchen Sie, diese von einem Hintergrund-Thread zu tun? Ein einfacher und definitiver Test hinzuzufügen wäre:

NSLog(@"thread: %@", [NSThread currentThread]);

überprüfen, ob Ihr activityIndicator ist nicht nil:

NSLog(@"activityIndicator: %@", activityIndicator);

Wenn Sie Ihre Log-Null, dann ist dies zu tun:

in ".h" declare:

__strong UIActivityIndicatorView *activityIndicator

die __strong vermeiden ARC und dann können Sie entfernen und die activityIndicator stoppen.

[activityIndicator stopAnimating];
[activityIndicator removeFromSuperview];

Wenn Sie es auf die Super mehr als einmal hinzufügen, es wird nicht funktionieren.

Versuchen Sie setzen

[superView addSubview:activityIndicator];

in den

if( activityIndicator == nil ) {

Bedingung

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top