1

私はこの問題を約2週間解決していますが、画像ではなく文字列しか渡すことができません。

このメソッドでは、カメラまたはライブラリから画像を保存します。

-(IBAction)saveAction:(id)sender
{

    Tricks *trick = [[Tricks alloc]init];
    trick.trickName = self.trickLabel.text;
    trick.trickPhoto = [[UIImageView alloc] initWithFrame:CGRectMake(0, 356, 320, 305)];
    trick.trickPhoto.image = self.ImagePhoto.image;
    [[Tricks trickList]addObject:trick];
   }

tableViewClass では、値を detailView のプロパティに保存します

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if([[segue identifier] isEqualToString:@"detailTrick"]){
        NSIndexPath *indexPath = nil;

        indexPath = [self.tableView indexPathForSelectedRow];

        DetailViewController *detailViewController  = [segue destinationViewController];
        Tricks *trick = [[Tricks trickList] objectAtIndex:indexPath.row];
        detailViewController.trickPhoto = [[UIImageView alloc]initWithFrame:CGRectMake(0, 358, 200, 200)];
        detailViewController.fileText = trick.trickName;
        detailViewController.trickPhoto = trick.trickPhoto;
        //object = [Tricks trickList][indexPath.row]

    }
}

テキストは毎回問題なく表示されましたが、detailViewController.Thanks に画像がありません。

detailViewController の viewDidLoad

    [super viewDidLoad];
   [self.detailButton setTitle:[NSString stringWithFormat:@"%@",_fileText] forState:UIControlStateNormal];
    [self.trickPhoto setImage:_trickPhoto.image];
4

1 に答える 1

2

まず、クラスtrickPhoto内はではなく である必要があります。モデルはフレームなどのビューについて何も知らないはずなので、現在は MVC デザイン パターンに違反しています。TrickUIImageUIImageView

次に、次のようになります。

- (IBAction)saveAction:(id)sender
{
    Tricks *trick = [[Tricks alloc] init];
    trick.trickName = self.trickLabel.text;
    trick.trickPhoto = self.ImagePhoto.image;
    [[Tricks trickList] addObject:trick];
}

これを行うより良い方法は、内部にTrickプロパティを作成し、DetailViewControllerトリック全体をビュー コントローラーに渡すことです。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"detailTrick"]) {
        NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];

        DetailViewController *detailViewController  = [segue destinationViewController];
        Tricks *trick = [[Tricks trickList] objectAtIndex:indexPath.row];
        NSLog(@"Make sure trick isn't nil: %@", trick);
        detailViewController.trick = trick;
    }
}

次に、次のように入力します。

[super viewDidLoad];
[self.detailButton setTitle:[NSString stringWithFormat:@"%@", self.trick.trickName] forState:UIControlStateNormal];
[self.trickPhoto setImage:self.trick.trickPhoto];
于 2013-10-27T13:50:45.977 に答える