Note that there are some explanatory texts on larger screens.

plurals
  1. POCan not adjust UIPopupController to display images
    primarykey
    data
    text
    <p>In my application (code listed below), I use a popover to display a series of colors that the user can choose. These colors are used for the color of the drawing they are completing above. I am trying to modify the popover to work the same way, except for this time I would want to display images (the images are saved in the application's documents folder as png files) instead of blocks of color. Listed below is the working code for the color selector popover. ColorGrid is a UIview which contains an NSArray Colors, as well as two NSUIntegers columnCount and rowCount. I have tried to replace the items in the colors array with UIImages of the png files, as well as UIImageViews but I have not been able to get a successful result (or a compilable one). Listed below is the working code. Could anyone show me how I can change the UIColor items to the images to show them in the grid? </p> <pre><code>- (IBAction)popoverStrokeColor:(id)sender { StrokeColorController *scc = [[[StrokeColorController alloc] initWithNibName:@"SelectColorController" bundle:nil] autorelease]; scc.selectedColor = self.strokeColor; [self doPopoverSelectColorController:scc sender:sender]; } - (void)doPopoverSelectColorController:(SelectColorController*)scc sender:(id)sender { [self setupNewPopoverControllerForViewController:scc]; scc.container = self.currentPopover; self.currentPopover.popoverContentSize = scc.view.frame.size; scc.colorGrid.columnCount = 2; scc.colorGrid.rowCount = 3; scc.colorGrid.colors = [NSArray arrayWithObjects: //put the following below back in after testing [UIColor blackColor], [UIColor blueColor], [UIColor redColor], [UIColor greenColor], [UIColor yellowColor], [UIColor orangeColor], //[UIColor purpleColor], // [UIColor brownColor], // [UIColor whiteColor], // [UIColor lightGrayColor], //[UIColor cyanColor], //[UIColor magentaColor], nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(colorSelectionDone:) name:ColorSelectionDone object:scc]; [self.currentPopover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; //displays the popover and anchors it to the button } </code></pre> <p>Thanks for your help. I am new to objective-c.</p> <p>edit - heres the function with my attempt to insert the images instead of the colors</p> <pre><code>- (void)doPopoverSelectColorController:(SelectColorController*)scc sender:(id)sender { [self setupNewPopoverControllerForViewController:scc]; scc.container = self.currentPopover; self.currentPopover.popoverContentSize = scc.view.frame.size; // these have to be set after the view is already loaded (which happened // a couple of lines ago, thanks to scc.view... scc.colorGrid.columnCount = 2; scc.colorGrid.rowCount = 3; //here we need to get the UIImage items to try to put in the array. NSArray *pathforsave = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentDirectory = [pathforsave objectAtIndex:0]; //here we need to add the file extension onto the file name before we add the name to the path //[fileName appendString:@".hmat"]; NSString *strFile = [documentDirectory stringByAppendingPathComponent:@"test.png"]; NSString *strFile1 = [documentDirectory stringByAppendingPathComponent:@"test1.png"]; NSString *strFile2 = [documentDirectory stringByAppendingPathComponent:@"test2.png"]; NSString *strFile3 = [documentDirectory stringByAppendingPathComponent:@"test3.png"]; NSString *strFile4 = [documentDirectory stringByAppendingPathComponent:@"test4.png"]; NSString *strFile5 = [documentDirectory stringByAppendingPathComponent:@"test5.png"]; //now for the Images UIImage *image = [ UIImage imageWithContentsOfFile: strFile]; UIImage *image1 = [ UIImage imageWithContentsOfFile: strFile1]; UIImage *image2 = [ UIImage imageWithContentsOfFile: strFile2]; UIImage *image3 = [ UIImage imageWithContentsOfFile: strFile3]; UIImage *image4 = [ UIImage imageWithContentsOfFile: strFile4]; UIImage *image5 = [ UIImage imageWithContentsOfFile: strFile5]; UIImageView *imageview = [[[UIImageView alloc] initWithImage:image] autorelease]; [self.view addSubview:imageview]; UIImageView *imageview1 = [[[UIImageView alloc] initWithImage:image1] autorelease]; [self.view addSubview:imageview1]; UIImageView *imageview2 = [[[UIImageView alloc] initWithImage:image2] autorelease]; [self.view addSubview:imageview2]; UIImageView *imageview3 = [[[UIImageView alloc] initWithImage:image3] autorelease]; [self.view addSubview:imageview3]; UIImageView *imageview4 = [[[UIImageView alloc] initWithImage:image4] autorelease]; [self.view addSubview:imageview4]; UIImageView *imageview5 = [[[UIImageView alloc] initWithImage:image5] autorelease]; [self.view addSubview:imageview5]; imageview.image = image; imageview1.image = image1; imageview2.image = image2; imageview3.image = image3; imageview4.image = image4; imageview5.image = image5; scc.colorGrid.colors = [NSArray arrayWithObjects: // When attempting to add the images like this - get the error identified expected // after the e in image, at the end bracket. Putting a * does nothing to change the error [image], // When adding one of the Imageviews, i get the same error as above //below is how I attempted to add it [imageView], // nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(colorSelectionDone:) name:ColorSelectionDone object:scc]; [self.currentPopover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; //displays the popover and anchors it to the button } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload