Frage

Ich habe einen UIButton auf einem UIView. Ich mag programmatisch herauszufinden, welches Bild in der Schaltfläche angezeigt werden, wenn die Ansicht angezeigt wird. Ich habe die drawRect Methode in der UIView außer Kraft gesetzt und verwendet, um eine setImage das gewünschte Bild anzuzeigen. Wenn jedoch die Ansicht angezeigt wird, manchmal zieht es das gewünschte Bild, und manchmal ist es nicht. Ich habe überall in der Ansicht berühren für das Bild in der Taste zu zeigen. Bitte helfen Sie!

Hier ist die drawRect Methode für die Ansicht.

- (void)drawRect:(CGRect)rect
{
[myButton setImage:[UIImage imageNamed:@"myImage.png"] forState:UIControlStateNormal];
}

Alles ist korrekt IB verdrahtet. Ich verstehe nicht, warum das Bild erscheint / nicht konsequent erscheinen. Vielen Dank.

War es hilfreich?

Lösung

Sie wirklich nicht wollen, drawRect außer Kraft zu setzen.

Die richtige Sache zu tun ist, ein UIViewController zu implementieren, und außer Kraft setzen viewWillAppear:.

-(void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [self.myButton setImage:[UIImage imageNamed:@"myImage.png"] forState:UIControlStateNormal];
};

Andere Tipps

Murmeltier hat die richtige Antwort , aber ich möchte nur erklären, was tatsächlich mit Ihrem Code geschieht, und warum funktioniert es einen Teil der Zeit.

Die drawRect Methode wird jedes Mal das System will Ihre Ansicht Objekt aufgerufen sich auf dem Bildschirm angezeigt werden soll. Einstellen der Schaltfläche Bild in der drawRect Methode wird auf die Schaltfläche Bild ändern, aber da das System bereits im Begriff ist, auf dem Bildschirm zeichnen, werden Sie nicht wirklich sehen, die Änderung bis zum weiter Zeit brauchen, um die Ansichten neu gezeichnet werden. In diesem Fall berühren, wenn Sie irgendwo anders in der Ansicht.

Danke für die Erklärung. Leider ist dieser Code Teil eines größeren Projektes mit einem anderen Entwickler. Ich kann nicht den aktuellen UIView zu einem UIViewController ändern. Stattdessen wechselte ich auf die Schaltfläche Bild in einer anderen Art und Weise. Ich änderte den Status der Schaltfläche kurz vor der UIView zum subview der Eigentümerviewcontroller zu addieren. dh: Ich gab die

[myButton setImage:[UIImage imageNamed:@"myImage.png"] forState:UIControlStateNormal];

Kurz vor meinem UIView als Subview hinzuzufügen. dh:

[masterViewController.view addSubview:myView];

offensichtlich ist myButton Teil myView. Vielen Dank für das unterstützen.

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