我有一个UICollectionViewController
的简单应用程序,该应用程序是在Storyboard
中设计的。我在UICollectionViewCell
设计了一个单元格(UICollectionViewController
),因为它是动态的。
我的UICollectionViewController
被称为Videos
,我有UICollectionViewCell
的自定义子类VideosCell
,其中IBOutlet
来自Storyboard
一个UILabel
。使用Videos
语言填充NSArray
。在Storyboard
内,我还有2 UITableViewControllers
;一个名为VideosFromVideoTab
,另一个名为English Topics
。我已经segue
从VideosCell
到Storyboard
,然后在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
。因此,如果我从VideosCell
到VideosFromVideosTab
UITableViewController
有一个segue
,它就会保留,但如果我从VideosCell
设置了另一个English Topic UITableViewController
} segue
,删除第一个segue。
在应用的单独区域中,我有UITableViewCell
个UITableViewControllers
到两个不同的UICollectionViewCell
。我是否遗漏了一些明显阻止我从change
?
任何想法都将不胜感激!
答案 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];