好的,所以我已经在一天左右的时间里解决了这个问题,似乎是新iOS开发中的一个相当普遍的问题。但是,我搜索谷歌,appledev,堆栈溢出等。
但是,我找不到正确的解决方案。没有明确的答案。
我需要分段控件来更改tabledata源或完全显示一个新视图,或者没问题。
目前,我有一个解决方案,我将分段控件放在一个tableheader中,这样可以正常工作,但我不希望分段控件与表格单元格一起滚动。
我试图让它静态和不可滚动,就像导航栏一样。
我在界面构建器中尝试了一些选项,但它们都没有工作,要么它们不显示,要么因为无法找到表格视图而导致崩溃。
虽然,我知道它与在视图中放置视图有关吗?
如果有人有空闲时间撰写快速但详细的指南,我将非常感激。
编辑
尝试1: 在IB ...
查看
- > Tableview(父视图中的tableview)
创建此错误
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UITableViewController loadView] loaded the "EventsViewController" nib but didn't get a UITableView.'
答案 0 :(得分:1)
首先,您需要一个控制器,它将包含您想要添加的分段控件,表视图和其他元素。 由于您的应用程序只有一个控制器,因此可以在其中捕获分段控件的任何更改。捕获事件后,您可以通过更新tableview或加载新视图来决定是否重新加载tableview。
此新视图也可以作为模态视图或新视图加载到导航控件或作为当前视图的子视图。 (电话留给你)。
优点是分段控件和表格视图将是UIView的一部分,滚动不会滚动分割视图。其他优点将是将新视图加载到当前视图之上。您可以使用委托方法来处理新视图上的反压事件。您还可以将新视图中的数据提供给单个控制器。
UIView
--- Segmented control(you can wrap this into a seperate UIView
--- UITableView (it can also be wrapped into a seperate uiview )
--- Other widgets
现在您可以让一个视图控制器控制上面的主UIView。希望这对你有所帮助。我在我的一个应用程序中使用了类似的方法。
答案 1 :(得分:0)
你可以做的是有一个分段控件基本上改变了表数据源。基本上,将操作设置为[myTableView reloadData];
。然后,在您的数据源方法中,添加一些if语句。例如,在numberOfRowsInSection下,例如:if (mySegmentedControl.selectedSegmentIndex = 1)
//第二个按钮,使用此数组。得到我的意思?
通过这种方式,您可以使用一个视图控制器,基本上只有两个(实际上是一个)表。