Objective-C:如何在按钮点击上加载不同的视图?

时间:2013-03-26 16:26:07

标签: ios button views collectionview

我有一个iPad应用程序,在一个视图上有一个按钮。当我按下按钮时,我希望它加载第二个视图。我想加载的第二个视图是CollectionView。我没有使用,也不想使用UINavigationController。

有人知道如何在按钮上加载第二个视图吗?此外,我将要创建一个返回上一个视图的“后退”按钮。每次点击按钮时,上一个视图可能会有所不同。

关于这个主题的网上有相当数量的资料,但我找不到任何有用的东西或最新的东西。

以下是我现在的代码:

-(void)showCollectionView:(id)sender
{
    NSLog(@"In ShowCollectionView");

    ZHCollectionViewController *cvc = [[ZHCollectionViewController alloc]
                              initWithNibName:@"ZHCollectionViewController"
                              bundle:[NSBundle mainBundle]];
    [self.view addSubview:cvc.view];

    NSLog(@"After all the stuff");
}

当它运行时,两个NSLog都被执行并且消息显示在控制台中,但视图没有任何反应。

2 个答案:

答案 0 :(得分:0)

哟可以尝试以模态呈现:

[self presentViewController:cvc animated:YES completion:^{
                                                         }];

在此调用之前,您可以通过定义转换和演示样式来自定义“cvc”的外观,例如:

cvc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
cvc.modalPresentationStyle = UIModalPresentationFormSheet;

要隐藏它,请在ZHCollectionViewController中调用,在一些按钮操作中,我相信

[self dismissViewControllerAnimated:NO completion:^{  
                                                   }];

答案 1 :(得分:0)

有几种方法可以做到这一点,你尝试的方式不是其中之一。如果您只想添加视图而不是视图控制器,则应该有一个视图的xib文件,而不是视图控制器。您必须将您正在添加此集合视图的视图的控制器设置为此集合视图的文件所有者,以便您可以将任何插座连接到它。

将另一个视图控制器的视图添加到视图中是不正确的,除非您将该控制器设置为子控制器。如果希望ZHCollectionViewController成为集合视图的控制器,则应将该控制器添加为子视图控制器。您可以查看Apple关于自定义容器控制器的文档,了解它是如何完成的。

你没有在你的问题中说出这个集合视图是如何出现的。你想要它占据整个屏幕,还是你想让它成为一个子视图?如果你想让它占据整个屏幕,那么最好只将窗口的根视图控制器更改为ZHCollectionViewController,或者在当前视图上以模态方式呈现它。