Använda sig av UIImageView i olika views

4 views
Skip to first unread message

Johan Möller

unread,
Oct 27, 2011, 6:51:31 AM10/27/11
to Sweden iPhone Development
Hej! Sitter och programmerar en app till iPhone men har stött på ett
problem.

I klass A använder jag mig av en UIImageView där jag sätter bilden i
den genom att använda mig av kameran/telefonens kamerabibliotek.

När jag sedan klickar på en knapp så skickas jag till ett nytt fönster
där en instans av klass B startas. Här i klass B vill jag använda mig
av bilden som ligger i UIImageView i klass A. Hur kan man göra detta?
Har googlat en del och provat ett par varianter men inget har fungerat
som jag har velat.

Någon som har något tips på vad jag kan leta efter?

Tack på förhand

Erik Hedegren

unread,
Oct 27, 2011, 6:56:33 AM10/27/11
to iphone...@googlegroups.com
Du kan skicka med bilden när du init class B.

- (id)initWithImage:(UIImage *)image
{
if ((self = [super init]))
{
self.myImage = image;
}

return self;

Johan Möller

unread,
Oct 27, 2011, 7:01:14 AM10/27/11
to Sweden iPhone Development
Hmm förstår inte riktigt hur du menar. Jag har en klass (antar att det
är en klass?) som heter TakePhoto och använder sig av en view. Sen har
jag en annan som heter SendPhoto. I TakePhoto får användaren ta en
bild men kameran eller välja en ur kamerabiblioteket. Sen klickar man
på en "fortsätt" knapp som skickar en till en view av klass B, där
vill jag att bilden man tog/valde i första viewen ska visas.

Koden du skrev; vart ska jag skriva in den för att det sak fungera?

Johan Möller

unread,
Oct 27, 2011, 7:06:02 AM10/27/11
to Sweden iPhone Development
På raden:

-(id)initWithImage:UIImage *)image

Vad ska jag ersätta image med? Försöker jag med samma namn som jag har
i klass A så hittar den inte det...

On 27 Okt, 12:56, Erik Hedegren <erikhedeg...@gmail.com> wrote:

Erik Hedegren

unread,
Oct 27, 2011, 7:10:29 AM10/27/11
to iphone...@googlegroups.com
I SendPhoto, i .h:

UIImage *myImage;

- (id)initWithImage:(UIImage *)image;

i m.

- (id)initWithImage:(UIImage *)image;
{
if ((self = [super init]))
{

myImage = image;
}

return self;
}


När du trycker på "fortsätt" i TakePhoto, så laddar du in SendPhoto så här:

SendPhoto *sendPhoto = [[SendPhoto alloc] initWithImage: dinUiImageView.image];
[self navigationController: pushmodalviewcontroller.... ] (eller hur nu nu gör för att ladda in SendPhoto classen)


Alltså, när du laddar in SendPhoto så skickar du även med bilden från TakePhoto klassen... men du måste assigna bilden till en variabel i SendPhoto klassen för att kunna använda den... vilken du gör med myImage = image;

Testa, och berätta hur det går :)

Johan Möller

unread,
Oct 27, 2011, 7:18:10 AM10/27/11
to Sweden iPhone Development
Perfekt, nu funkar det precis som jag ville! Tack för all hjälp.

Erik Hedegren

unread,
Oct 27, 2011, 7:19:20 AM10/27/11
to iphone...@googlegroups.com
:)

Johan Möller

unread,
Oct 27, 2011, 7:55:01 AM10/27/11
to Sweden iPhone Development
Kan lika gärna ta en till fråga när man är igång...

Har följande kod:

-(IBAction) getPhoto:(id) sender
{
UIImagePickerController *picker = [[UIImagePickerController alloc]
init];
picker.delegate = self;

if((UIButton *) sender == choosePhotoBtn) {
picker.sourceType =
UIImagePickerControllerSourceTypeSavedPhotosAlbum;
} else {
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
}

[self presentModalViewController:picker animated:YES];
}

Får varning på:

picker.delegate = self;

Vad är det jag gör där som inte är tillåtet?

Erik Hedegren

unread,
Oct 27, 2011, 7:58:41 AM10/27/11
to iphone...@googlegroups.com
i .h


@interface SendPhoto : UIViewController <UIImagePickerControllerDelegate>


alltså, lägg till <UIImagePickerControllerDelegate>

Johan Möller

unread,
Oct 27, 2011, 9:32:27 AM10/27/11
to Sweden iPhone Development
Hmm det fungerade inte... har kvar samma varning


Ett annat problem med, när jag startar min app, stänger ner den
(stänger även ner i multitasken), öppnar den igen. Då kraschar
appen...

Får en breakpoint på raden;

int retVal = UIApplicationMain(argc, argv, nil, nil);

Även ett felmeddelande:

Thread 1: Program recieved signal: "SEGKILL".


Någon aning om vad det är som orsakar detta?

Mvh

Erik Hedegren

unread,
Oct 27, 2011, 2:21:19 PM10/27/11
to iphone...@googlegroups.com
SEGKILL beror bara på att din app stängdes ner av dig när xcode fortfarande körde appen. Om du testar utan att ha xcode inkopplat så kommer du inte få det problemet.

Vad står det i varnings meddelandet?

Johan Möller

unread,
Oct 27, 2011, 3:07:25 PM10/27/11
to Sweden iPhone Development
"Class TakePhoto 'id<UINavigationControllerDelegate,
UIImagePickerControllerDelegate>' from incompatible type 'TakePhoto
*'"

Erik Hedegren

unread,
Oct 27, 2011, 3:15:59 PM10/27/11
to iphone...@googlegroups.com
aha... lägg till UINavigationControllerDelegate också, alltså:

<UIImagePickerControllerDelegate, UINavigationControllerDelegate>

Johan Möller

unread,
Oct 27, 2011, 3:27:14 PM10/27/11
to Sweden iPhone Development
Tack så mycket det löste sig med det! Ifall du orkar/har tid kanske du
skulle kunna skriva en rad eller två vad det är jag gör med dessa
rader?

Mvh

Erik Hedegren

unread,
Oct 27, 2011, 3:30:35 PM10/27/11
to iphone...@googlegroups.com
Gör en google sökning på "objective c delegate", så kan du läsa på lite mer hur det funkar... finns massa bra info
Reply all
Reply to author
Forward
0 new messages