UIImageView macht Probleme beim Bildwechseln

  • UIImageView macht Probleme beim Bildwechseln

    HI!

    Ich habe einen ViewController erstellt, welcher eine UIImageView beinhaltet. Alles mit InterfaceBuilder gemacht. Nun würde ich gerne zu gegebenem Anlass das Bild wechseln. Daher habe ich mir eine Variable angelegt und diese im IB verbunden. Die Variable ist vom Typ IBOutlet UIImageView.

    Nun versuche ich so das ganze Bild zu verändern:

    Quellcode

    1. UIImage *imageTEST = [UIImage imageNamed: @"bild123.jpg"];[[detailView image] setImage:imageTEST];



    image ist in diesem Fall die Variable vom Typ UIImageView.

    Alternativ habe ich vorher noch das hier versucht:

    Quellcode

    1. NSString *imgPfad = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:graphicFile];
    2. NSURL *imgURL = [[NSURL alloc]initWithString: @"bild123.jpg"];
    3. NSData *imgData = [[NSData alloc] initWithContentsOfURL:imgURL];
    4. UIImage *img = [[UIImage alloc] initWithData:imgData];


    graphicFile ist hierbei ein String (der Dateiname als String).

    Hat aber auch nicht geklappt! Grrr!

    Bitte um Hilfe
  • Misteriös ist, dass in diese IF-Abfrage reingelaufen wird:

    Quellcode

    1. DetailView *detailView = [[DetailView alloc] initWithNibName:@"DetailView" bundle:nil];
    2. if (detailView == nil) {
    3. NSLog(@"DetailView is gone!");
    4. }

    auf auf der Console konnte ich kein

    Quellcode

    1. po [detailView retainCount]

    bzw.

    Quellcode

    1. po detailView


    machen! Immer kam folgende Fehlermeldung:

    Quellcode

    1. Unable to access variable "detailView"
    2. 0x0 does not appear to point to a valid object.
  • So... also zurück...

    detailView ist scheinbar doch nicht NIL! Aber meine UIImageView in meinem ViewController ist NIL. Und ich kann mir nicht erklären warum.

    Hier mal meine Property und die Variable.

    Quellcode

    1. IBOutlet UIImageView *grafik;@property(retain,nonatomic) IBOutlet UIImageView *grafik;
  • Diese Zeile sieht sehr unkonventionell aus:

    Quellcode

    1. DetailView *detailView = [[DetailView alloc] initWithNibName:@"DetailView" bundle:nil];

    'detailView ' ist 'filesOwner', normalerweise ist das ein Controller.
    I would be embarrassed if they did not spy on me.
  • hi an alle!

    Ja es ist auch ein Controller. Hab es nur versäumt ihn so zu nennen. Ist aber ein DetailViewController.

    So war es gemeint:

    - DetailViewController (UIViewController)
    - grafik (UIImageView)

    Und in grafik ist ja dann wohl irgendwie ein Image oder sowas, das ich gerne ändern würde. Anbei noch ein Screenshot! Links ist das Bild, das ich gerne ändern würde.
  • Ich versuche doch von außen das Bild zu setzen. Vielleicht steh ich jetzt auch auf dem Schlauch. Aber ich habe aus einer anderen Klasse das hier gemacht

    Quellcode

    1. detailViewController.grafik.image = imageTEST;



    detailVielController wird angezeigt, aber das Bild wird nicht verändert.

    Oder kann ich es nicht von außen setzen? Muss ich das in einer Methode des DetailViewController machen?
  • UIImageView

    Hallo !

    Ich bin Anfänger und neu in diesem Forum und möchte nur sehen ob ich die Fragestellung richtig verstanden habe.
    DetailViewController ist die Klasse wo sich folgende Outlets bzw. Variablen befinden:

    UIImageView *image;
    UIImage *grafik ; //Bild1
    UIImage *imageTest; //Bild2


    IBOutlet UIImageView *image;


    Würde dann das Setzen des Bildes nicht so aussehen ?

    grafik = [UIImage imageNamed:@"Bild1"];
    imageTest = [UIImage imageNamed:@"Bild2"];

    [image setImage:grafik]; //Startbild und dann später . . .
    [image setImage:imageTest];

    Außerhalb der Klasse funktioniert es doch nur über eine Methode ?
  • Vivid schrieb:

    Ich bin langsam wirklich überfragt. Habe ich etwas vergessen?

    Anbei noch ein Screenshot

    Das wurde schon bei Dir mehrfach angesprochen, etwas mehr, und besser lesbarer Code kann hilfreich sein.
    Vielleicht lädst Du das Projekt hoch, das werden Kleinigkeiten sein.
    I would be embarrassed if they did not spy on me.
  • DetailViewController ist die Klasse wo sich folgende Outlets bzw. Variablen befinden:

    UIImageView *grafikView;


    So ist es richtig! Und man kann nun das Bild im IB per Klick setzen. Aber das will ich ja nicht. Will ein Bild aus dem Resource-Ordner als Grafik setzen. Dafür gibt es ja anscheinend auch diese Message:


    grafikView setImage:


    Aber das klappt nicht. Habe schon das hier gemacht:


    Quellcode

    1. [[myDetailViewController grafikView] setImage: [UIImage imageNamed:@"Bild1"]];




    aber da tut sich dann nix.
  • Vivid schrieb:

    DetailViewController ist die Klasse wo sich folgende Outlets bzw. Variablen befinden:

    UIImageView *grafikView;


    So ist es richtig! Und man kann nun das Bild im IB per Klick setzen. Aber das will ich ja nicht. Will ein Bild aus dem Resource-Ordner als Grafik setzen. Dafür gibt es ja anscheinend auch diese Message:


    grafikView setImage:


    Aber das klappt nicht. Habe schon das hier gemacht:


    Quellcode

    1. [[myDetailViewController grafikView] setImage: [UIImage imageNamed:@"Bild1"]];




    aber da tut sich dann nix.
    Von Außen geht es doch nur über eine eigene Methode die innerhalb von DetailViewController steht ?