iOS:在一个ViewController中映射和列表

我想把两个不同的视图(列表和地图)放到一个View Controller中。 用户可以通过按下顶部的右键来改变视图。 对于这两个将有search选项。 如果可能的话,我想分开列表和地图的类。

我会很感激一些小费如何做到这一点。

意见http://img201.imageshack.us/img201/1104/56044506.png

我build议你创build一个UIViewController的子类的父类,这个类的目的是处理search栏的function和来自你的数据源的任何通用的委托callback。

从理论的angular度来看,这个类将作为一个抽象类来使用,这意味着它只能被子类化,而不是直接初始化,但是因为这是不可能在objective-c中强制执行的,所以不要太担心。

接下来的部分取决于你是否希望使用两个视图控制器的列表和地图(在问题的结尾,你说你想使用两个类…?)

然后,您可以创build两个UIViewControllers ,一个用于映射,一个用于列表,它们都将inheritance上面提到的抽象类。 这将允许他们inheritance数据源委托callback和search栏function。

或者你可以把两者合并成一个UIViewController ,它是上述抽象类的子类,就像在Dickens的答案中一样,你可以在一个单独的xib文件中pipe理两个视图,并通过隐藏和显示来交换它们,或者添加和删除他们的超级观点。

希望这可以帮助。

在xib或storyboard中有2个视图,1个用于地图视图,1个用于列表视图,当他们点击其中一个button时,它隐藏其中一个视图,并显示另一个隐藏的属性

 [listView setHidden:NO]; 

这是一个例子….

确保你有两个视图的引用,并且引用是链接的。 这是一个晦涩的方式来做到这一点。 你也可以尝试一个选项卡视图控制器…但这是更复杂的

使用UITableView和MKMapView并将它们添加到相同的内容视图。 根据用户点击的button,使用隐藏属性隐藏和取消隐藏视图。