iOS - 将Segues附加到我的CollectionViewCells

时间:2014-04-29 16:02:08

标签: ios objective-c ios7 uicollectionview segue

我正在创建一个应用程序,其中我有一个UICollectionView,其中有8个不同的项目在我的viewDidLoad方法中以编程方式插入,如下所示:

- (void)viewDidLoad
{
    [super viewDidLoad];
    navItems = [[NSMutableArray alloc]init];
    [navItems addObject:@"personnel"];
    [navItems addObject:@"equipment"];
    [navItems addObject:@"tasks"];
    [navItems addObject:@"triage"];
    [navItems addObject:@"logs"];
    [navItems addObject:@"mapping"];
    [navItems addObject:@"headsup"];
    [navItems addObject:@"messenger"];
}

我想在每个中添加一个segue,将每个都带到我的应用中的新页面。我考虑过这样做的一些方法:

答:手动输入8个项目进入故事板并为每个选择一个唯一的标签,我可以将segue连接到OR ctrl +点击进入segue(我基本上尝试了这个,它似乎变得非常困惑......无法和#39;得到要编译的代码)

B:在添加对象时设置项目的关键字,如[navItems addObject:@"personnel" setKey:@"1"];,然后在segue中调用forKey

我无法找出正确的方法来说明论点,而且我不确定这是否可能......所以:

在collectionView中为每个导航项添加单独的segue的最佳方法是什么?我该如何解决这个问题? 感谢

2 个答案:

答案 0 :(得分:1)

我确信这是在其他地方被问到并回答的,但是......

您需要在Interface Builder中通过从视图控制器(在视图下方的栏中)拖动到目标视图控制器来定义segue。确保为每个人提供唯一的标识符。

要调用segues,请覆盖collectionView:didSelectItemAtIndexPath:并调用[self performSegueWithIdentifier:<segue identifier here> sender:self],可能是在一个很大的if ... else ...语句中。

答案 1 :(得分:0)

我认为你需要根据所选对象做一个模态segue。例如:

在集合视图控制器的此委托方法的实现中:

collectionView:didSelectItemAtIndexPath:

{
    //get the array item using index path: you probably have 1 section
    NSString *object=[navItems objectAtIndex:[indexPath.row]];

   //now use switch case to check what string presents which view controller
   switch (indexPath.row){
       case 0:
              [self presentViewController:[MYVC1 new] animated:YES completion:NULL];
       break;

       //do this case for whatever objects you want to modally segue
   }

}

不幸的是,从iOS7开始,你无法使用NSString。如果设置数组,则知道哪个索引具有哪个字符串,并且您在case块内引用该视图控制器。

我知道它很乏味,但试着改进它。它的方式比在故事板上挂8个segues更好。确保你没有做Push Segue,否则你需要做[self.naviagtionController pushVC:Animated];

希望它有所帮助!