2013-05-26 76 views
0

我有一個集合視圖,其中將包含一個或兩個已添加到可變數組的JSON解析圖像。我想從包含圖像的集合視圖單元繼續到另一個視圖控制器。但是,目標segue將包含與集合視圖不同的圖像(另一個JSON解析的圖像)。另外,這兩個collection視圖單元格將會延伸到不同的圖像。總結如下:收藏查看Segue

的CollectionView -------賽格瑞----------> DesintationVC

方案1

  1. Objectatindex:0 imageA ----- -segue -----> newImageA

方案2

  1. Objectatindex:0 imageB ------ -----賽格瑞> newImageB
  2. Objectatindex:1 imageC ------賽格瑞-----> newImageC

什麼是去了解這一點的最好方法是什麼?

我的線沿線的思考...

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
if ([segue.identifier isEqualToString:@"image1"]) { 
    if (sender == [pamphlet_Array objectAtIndex:0]){ 

    } 
} 

,但不太清楚如何進行。

回答

1

從收藏視圖控制器到詳細視圖控制器(我們稱之爲detailSegue)只需要一個segue。您還需要輕觸手勢識別器,只需從故事板中將其拖放到collectionview控制器中即可。然後創建一個與這個手勢識別器相關的IBAction(ctrl-將它從故事板拖到視圖控制器的實現中,選擇UITapGestureRecognizer作爲發送器類型並命名,例如tapped)。 在這種tapped方法把沿下面的代碼的東西:

- (IBAction)tapped:(UITapGestureRecognizer *)gesture { 

    CGPoint tapLocation = [gesture locationInView:self.collectionView]; 
    NSIndexPath *indexPath = [self.collectionView indexPathForItemAtPoint:tapLocation]; 
    if (indexPath) { 
    self.pamphlet = [pamphlet_Array objectAtIndex:indexPath.item] 

     NSLog(@"Selected pamphlet: %@", self.pamphlet); 

     [self performSegueWithIdentifier:@"detailSegue" sender:self]; 
    } 
} 

哪裏self.pamphletPamphlet*類型(或任何你在pamphlet_Array存儲)的您的收藏視圖控制器的屬性。

然後在您的prepareForSegue:sender:方法只是這樣做:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
    if ([segue.identifier isEqualToString:@"detailSegue"]){ 
     YourDetailViewController* vc = (YourDetailViewController*)segue.destinationViewController 
     vc.selectedPamphlet = self.pamphlet; 
    } 
} 

現在您的詳細視圖控制器將知道選擇什麼樣的小冊子,因此可以顯示任何你需要取決於顯示。

我希望這可以幫助,讓我知道它是否工作!

+1

我寧願從集合視圖單元格創建一個segue到下一個視圖控制器(不需要輕觸手勢識別器afaik) – asdfasdfads