0

私のアプリケーション (下記のコード) では、ポップオーバーを使用して、ユーザーが選択できる一連の色を表示します。これらの色は、上で完成させている図面の色に使用されます。ポップオーバーを同じように変更しようとしていますが、今回は色のブロックではなく画像を表示したいと思います (画像はアプリケーションのドキュメント フォルダーに png ファイルとして保存されます)。以下にリストされているのは、カラー セレクタ ポップオーバーの作業コードです。ColorGrid は、NSArray Colors と 2 つの NSUInteger columnCount および rowCount を含む UIview です。色配列の項目を png ファイルの UIImages と UIImageViews に置き換えようとしましたが、成功した結果 (またはコンパイル可能な結果) を得ることができませんでした。以下にリストされているのは、作業コードです。

- (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
}

ご協力いただきありがとうございます。私はobjective-cが初めてです。

編集 - 色の代わりに画像を挿入しようとする機能をここに示します

- (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
}
4

1 に答える 1

1

imageやimageViewの周りの角かっこを削除します。

scc.colorGrid.colors = [NSArray arrayWithObjects:
// Not : [image] but
 image,
// or
imageView,
// Not : [imageView],
 nil];
于 2012-10-05T20:28:55.690 に答える