Verwenden eines Delegaten zum Verwalten von zwei UIActionSheets

7

Ich habe zwei UIActionSheets und ich denke, dass ich sie mit einem Delegaten (dem UIViewController, der sie instanziiert) steuern werde. Der Delegat erfasst einen actionSheet-Aufruf und versucht herauszufinden, welcher der beiden das Ereignis ausgelöst hat.

Ich habe versucht, den Titel des modalView zu unterscheiden, aber es scheint ungültig zu sein ...

Sollte das funktionieren?

Wenn nicht, gibt es eine andere Möglichkeit zu unterscheiden, welches UIActionSheet das Ereignis gemacht hat?

Oder muss ich zwei verschiedene Klassen erstellen, die für jedes UIActionSheet separate Delegaten sind?

Vielen Dank im Voraus.

    
Chris Hanson 24.11.2008, 08:12
quelle

3 Antworten

44

Ich denke, Sie brauchen die -Tag -Eigenschaft des UIActionSheet .

Etwas wie:

%Vor%

Dann in Ihrem Delegierten:

%Vor%

tag ist eine Eigenschaft von UIView und kann im Interface Builder für Komponenten festgelegt werden, die dort ebenfalls angezeigt werden. Ganz praktisch, obwohl ich es selbst nie in diesem Zusammenhang benutzt habe.

    
Stephen Darlington 24.11.2008 08:33
quelle
9

Delegate-Methoden in Cocoa enthalten das sendende Objekt für diesen Zweck. Behalten Sie in Ihrer Controller-Klasse einen Verweis auf jedes Ihrer Aktionsblätter als Instanzvariable, und Sie können dies mit dem actionSheet-Parameter in Ihren Delegate-Methoden vergleichen, um zu entscheiden, welche Aktionen Sie ausführen müssen.

Die Verwendung der Tag-Eigenschaft der Ansicht würde funktionieren, aber es wäre einfacher, einen Verweis zu behalten. Die Eigenschaft tag soll Ihnen helfen, eine Ansicht zu finden, wenn Sie eine Hierarchie von Unteransichten durchsehen und keinen Bezug zu dem benötigten Objekt haben.

    
Marc Charbonneau 24.11.2008 14:10
quelle
6

Sie sollten den actionSheet-Zeiger verwenden, der an die Methode des Delegaten übergeben wird, wie Marc sagte. Zum Beispiel:

%Vor%     
David Kanarek 09.06.2009 16:53
quelle

Tags und Links