从单个UICollectionViewCell

时间:2015-12-17 07:45:14

标签: ios objective-c uitableview uicollectionview uicollectionviewcell

我有一个UICollectionViewController的简单应用程序,该应用程序是在Storyboard中设计的。我在UICollectionViewCell设计了一个单元格(UICollectionViewController),因为它是动态的。

我的UICollectionViewController被称为Videos,我有UICollectionViewCell的自定义子类VideosCell,其中IBOutlet来自Storyboard一个UILabel。使用Videos语言填充NSArray。在Storyboard内,我还有2 UITableViewControllers;一个名为VideosFromVideoTab,另一个名为English Topics。我已经segueVideosCellStoryboard,然后在LanguagesFromVideos设置prepareForSegue,我有以下内容:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{

    NSIndexPath *indexPath = [self.videosTabCollectionView indexPathForCell:sender];

    [self.videosTabCollectionView deselectItemAtIndexPath:indexPath animated:YES];

    VideosTabCollectionCell *videosTabCell = (VideosTabCollectionCell *)[self.videosTabCollectionView cellForItemAtIndexPath:indexPath];


    if ([segue.identifier isEqualToString:@"languagesFromVideoSegue"])
    {

        if ([videosTabCell.videosTabCellLabel.text isEqualToString:@"Chinese\n汉语"])
        {
            LanguageFromVideoTabTableViewController *lfvtvc = (LanguageFromVideoTabTableViewController*)segue.destinationViewController;
            NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Chinese Videos" ofType:@"txt"];
            NSString *testString = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
            NSArray *listOfVideos = [testString componentsSeparatedByString:@"\n"];
            NSMutableArray *availableVideosToPass = [listOfVideos mutableCopy];

            NSString *theSelectedLanguage = @"Chinese - 汉语";

            [lfvtvc setAvailableVideos:availableVideosToPass];
            [lfvtvc setSelectedLanguage:theSelectedLanguage];

        }
Etc

所以我正在检查这个segue identifier,然后检查标签的语言,看看会发生什么。这非常有效。

然而,在我的脑海中,对于英语,而不是去VideosFromVideoTab,它应该转到English Topic UITableViewController,所以我想我可以设置另一个segue一个不同的identifier,然后在prepareForSegue中检查一下。

问题

但是,在Storyboard中,每当我从segue设置另一个VideosCell时,它只会保留一个segue。因此,如果我从VideosCellVideosFromVideosTab UITableViewController有一个segue,它就会保留,但如果我从VideosCell设置了另一个English Topic UITableViewController } segue,删除第一个segue。

在应用的单独区域中,我有UITableViewCellUITableViewControllers到两个不同的UICollectionViewCell。我是否遗漏了一些明显阻止我从change

执行此操作的内容

任何想法都将不胜感激!

2 个答案:

答案 0 :(得分:1)

您必须以编程方式使用推送。

FirstViewController * controller = (FirstViewController *)[self.storyboard instantiateViewControllerWithIdentifier:@"FirstView"];

[controller setAvailableVideos:availableVideosToPass];
[controller setSelectedLanguage:theSelectedLanguage];

[self.navigationController pushViewController:controller animated:YES];

第二次

SecondViewController * controller = (SecondViewController *)[self.storyboard instantiateViewControllerWithIdentifier:@"SecondView"];
[self.navigationController pushViewController:controller animated:YES];

通过这种方式,您可以根据所选单元格发送到多个ViewControllers。

答案 1 :(得分:0)

如果您需要单元格中的多个segue,则必须将ViewController中的segue设置为具有不同ID的ViewController。

然后捕捉Cell select and in use

[self performSegueWithIdentifier:@"id1" sender:self]; 

[self performSegueWithIdentifier:@"id2" sender:self];