| 

.NET C# Java Javascript Exception

2
Hallo zusammen,

bei meinem aktuellen App-Projekt greife ich in mehreren Views auf die Kamera der iOS-Geräte mit folgendem Code zu:

if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
UIImagePickerController *ipc = [[UIImagePickerController alloc] init];
ipc.sourceType = UIImagePickerControllerSourceTypeCamera;
ipc.delegate = self;
ipc.allowsEditing = NO;
[self presentModalViewController:ipc animated:YES];
} else {
//If there's no camera in the device, show an info-text
[notSupported setHidden:NO];
[createNewPhoto setHidden:YES];
}


Da ich diesen Code-Block öfter benötige, würde ich diesen gerne in eine eigene Klasse auslagern und dann an den benötigten Stellen nur noch aufrufen. Leider kriege ich es aber überhaupt nicht hin und wollte daher euch einmal fragen, wie ihr in diesem Fall vorgehen würdet bzw. wie ich allgemein am besten bestimmte Code-Fragmente, die öfter benötigt werden, auslagere und aufrufe.

Besten Dank bereits im Voraus für jede Unterstützung und viele Grüße,
Thomas
News:
10.11.2011
Sillivan 479 1 7
1 Antwort
3
Hallo Sillivan,
ich packe diesen Code in der Regel als statische Methoden in eine Hilfsklasse. In deinem Fall würde das etwa so aussehen. Ganz funktionieren wird es so noch nicht da ich nicht weiss welchen Typ "self" hat.. hier verwendest du statt id als Type am besten die Basisklasse deiner Viewcontroller.

.h
#import <Foundation/Foundation.h>
#import ...

@interface Util : NSObject { }
+ (void) initPicker:(id<UIImagePickerControllerDelegate>) arg;


.m
+ (void) initPicker:(id<UIImagePickerControllerDelegate>) arg
{
if ([UIImagePickerControllerisSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
UIImagePickerController *ipc = [[UIImagePickerController alloc] init];
ipc.sourceType = UIImagePickerControllerSourceTypeCamera;
ipc.delegate = arg;
ipc.allowsEditing = NO;
[arg presentModalViewController:ipc animated:YES];
} else {
//If there's no camera in the device, show an info-text
[notSupported setHidden:NO];
[createNewPhoto setHidden:YES];
}


Die Anwendung sieht dann so aus (falls "self" die passende Signatur hat, d.h. ein UIViewController bzw. davon abgeleitet ist und den UIImagePickerControllerDelegate implementiert):

#import "Util.h"
...
[Util initPicker:self];


Eine Alternative wäre ggf. auc die Implementierung einer Extension.
Viel Erfolg,
Daniel
10.11.2011
puls200 3,8k 7
Hallo Daniel,
vielen Dank für deine Antwort, das mit der eigenen Hilfsklasse ist genau das, was ich brauche! Eine Frage hierzu aber noch: Wie muss ich die Methoden, die ich in dieser Hilfsklasse anlege, in den dafür vorgesehen Klassen aufrufen um sie nutzen zu können (z.B. anhand der (void)initPicker-Methode)? Könntest du mir da noch einen entsprechenden Hinweis geben?
Besten Dank bereits im Voraus,
Thomas
Sillivan 11.11.2011
Hallo Thomas, siehe mein Edit.
Gruß
Daniel
puls200 11.11.2011
Hallo Daniel,
besten Dank für deinen Beitrag, genau so konnte ich mein Problem lösen! :-)
Viele Grüße,
Thomas
Sillivan 13.11.2011

Stelle deine Ios-Frage jetzt!