从 xib 调用 viewController
Call viewController from xib
我有一个包含底栏视图的 .xib。它有一个显示视图的按钮。我几乎在每个视图控制器中都使用了底部栏,但即使搜索了两个多小时也无法使其工作。
点击底部栏工作正常(NSLog
显示当我点击它们时按钮动作被调用),但我找不到做我想做的事情的方法。该按钮需要在特定框架中显示 6-7 行的 UITableViewController
,因此我不想完全使用屏幕。
|------|
| |
| |
| |
| |
|______|
|+_____|
|------|
| |
| |
|------|
| here |
|______|
|+_____|
上图中“+”号为按钮,需要在底栏正上方"here"的位置显示UITableViewController
。
我是 iOS 的新手,因此我正在用头撞墙。
提前致谢!
UITableViewController 需要使用整个屏幕。我不认为这是你想要的。
我只是创建一个 UIView 子类并向其添加一个 UITableView。然后,您可以将自定义视图作为子视图添加到当前视图。你的子类可以是数据源和委托,所以它可以完全 self-contained 所以你可以在应用程序的任何地方使用它。如果您想要检测 table 视图之外的点击以关闭自定义视图,它也可以是 full-screen 大小。只需将 backgroundColor 设置为 clearColor 并添加一个手势识别器来检测点击。
我认为您可能有一些比使用 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
都可以分成单独的 类 (和文件),这样你就可以避免臃肿的实现。
我有一个包含底栏视图的 .xib。它有一个显示视图的按钮。我几乎在每个视图控制器中都使用了底部栏,但即使搜索了两个多小时也无法使其工作。
点击底部栏工作正常(NSLog
显示当我点击它们时按钮动作被调用),但我找不到做我想做的事情的方法。该按钮需要在特定框架中显示 6-7 行的 UITableViewController
,因此我不想完全使用屏幕。
|------|
| |
| |
| |
| |
|______|
|+_____|
|------|
| |
| |
|------|
| here |
|______|
|+_____|
上图中“+”号为按钮,需要在底栏正上方"here"的位置显示UITableViewController
。
我是 iOS 的新手,因此我正在用头撞墙。
提前致谢!
UITableViewController 需要使用整个屏幕。我不认为这是你想要的。
我只是创建一个 UIView 子类并向其添加一个 UITableView。然后,您可以将自定义视图作为子视图添加到当前视图。你的子类可以是数据源和委托,所以它可以完全 self-contained 所以你可以在应用程序的任何地方使用它。如果您想要检测 table 视图之外的点击以关闭自定义视图,它也可以是 full-screen 大小。只需将 backgroundColor 设置为 clearColor 并添加一个手势识别器来检测点击。
我认为您可能有一些比使用 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
都可以分成单独的 类 (和文件),这样你就可以避免臃肿的实现。