我有一个包含底栏视图的.xib。它有一个显示视图的按钮。我几乎在每个视图控制器中使用该底栏,即使搜索了两个多小时后我也无法使其工作。
单击底栏可以正常工作(NSLog
显示单击它们时正在调用按钮操作),但我无法找到方法来执行我想要的操作。该按钮需要在特定帧中显示一个UITableViewController
6-7行,所以我不想完全使用该屏幕。
|------|
| |
| |
| |
| |
|______|
|+_____|
|------|
| |
| |
|------|
| here |
|______|
|+_____|
在上图中,“+”符号是按钮,需要在底部栏上方标有“此处”的位置显示UITableViewController
。
我是iOS的新手,因为这个我正在撞墙。
提前致谢!
答案 0 :(得分:2)
UITableViewController期望使用整个屏幕。我不认为这就是你想要的。
我只是创建一个UIView子类并向其添加一个UITableView。然后,您可以将自定义视图作为子视图添加到当前视图中。您的子类可以是数据源和委托,因此它可以是完全独立的,因此您可以在应用程序的任何位置使用它。如果要检测表视图外部的点击以关闭自定义视图,它也可以是全屏大小的。只需使用backgroundColor clearColor并添加一个手势识别器来检测水龙头。
答案 1 :(得分:0)
我认为你可能有更好的选择,而不是使用UITableViewController
,但是这里有:
您基本上想要添加子视图控制器。它可以这样做(这将在Swift
,但我也可以添加ObjC
版本):
func buttonTap(sender: UIButton) {
let viewController = UITableViewController(style: .Plain)
viewController.willMoveToParentViewController(self)
self.addChildViewController(viewController)
viewController.view.frame = CGRectMake(0, 0, self.view.bounds.width, self.view.bounds.height * 0.5)
self.view.addSubview(viewController.view)
viewController.didMoveToParentViewController(self)
}
这称为创建container view controller并且很常见(UIPageViewController
,UINavigationController
,...都使用此机制。)
但是,由于我不喜欢UITableViewControllers
,我建议您创建一个简单的UITableView
并将其添加为子视图。对于delegate
和dataSource
,两者都可以分成单独的类(和文件),这样就可以避免膨胀的实现。