我是iOS
开发人员的新手,我来自Android
开发人员,因此,我试图这样做:
我想要一个storyboard
,其顶部有一个表格视图,下面是一些按钮和文本字段。如果我抓住TableViewController
它会填满我的桌子,但是,我无法调整桌面大小以便buttons/textfields
显示下方。
直到现在我已经这样做了:
storyboard
以这种方式嵌套:ViewController
- > View
- > TableView
- > CustomCell
(不起作用!)
我已经有一个Controller
,可以使用自定义单元格填充表格视图。但是,它仅在故事板嵌套时才有效:TableViewController
- > TableView
(工作但不能调整tableview
)
我的主storyboard
(我唯一拥有的)有class
:
class SimpleController: UIViewController {
@IBOutlet weak var table = UITableView();
override func viewDidLoad() {
super.viewDidLoad()
//The delegate works well when is called directly from a TableViewContoller
//There's no error message but the table appears empty
table?.delegate = UITCustomCell();
table?.dataSource = UITCustomCell();
}
我也不确定这是否是最好的方法。非常感谢你!
答案 0 :(得分:4)
我会创建一个父视图控制器,它有两个视图控制器作为包含的视图控制器,您可以使用界面构建器中对象库中的容器视图元素进行设置:
将两个容器拖入此父级并根据它们调整大小,然后使用“embed”segue类型,链接一个表视图控制器和另一个包含按钮的视图控制器:
在您的父视图控制器类中,prepareForSegue(_: sender:)
将在您创建的每个“embed”segue之后调用viewDidLoad()
一次,因此您可以像这样获取每个视图控制器的引用:
class MyParentViewController: UIViewController {
var buttonPanelViewController: MyButtonPanelViewController!
var tableViewController: MyTableViewController!
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if let tableViewController = segue.destinationViewController as? MyTableViewController {
self.tableViewController = tableViewController
}
else if let buttonPanelViewController = segue.destinationViewController as? MyButtonPanelViewController {
self.buttonPanelViewController = buttonPanelViewController
}
}
}
class MyTableViewController: UITableViewController {}
class MyButtonPanelViewController: UIViewController {}
最后,您需要确保在界面构建器中设置自动布局约束,以便整个内容适合运行它的设备。对于这个问题来说,这是一个完整的“主题”,但它必不可少!如果您不熟悉,这是一个很好的教程:http://www.raywenderlich.com/50317/beginning-auto-layout-tutorial-in-ios-7-part-1
答案 1 :(得分:1)
我认为帕特里克林奇的答案很棒。我还有两件事需要补充,为了完全发挥作用(我还在学习,所以也许这些东西太基础了,甚至无法回答这个问题)。
从你的帖子做完所有事情后: 1.创建新文件,使其成为ViewController,另一个成为TableViewController 2.通过在故事板中选择一个新场景,然后从“工具”屏幕中选择“身份选择器”,然后选择与您创建的新文件匹配的类,将故事板中的每个视图附加到新的相应类。 Lynch示例中的新ViewController(名为MyButtonPanelViewController)和MyButtonPanelViewController的TableViewController的按钮视图。
Click here to see what I'm talking about
我的名字在图片中略有不同。
完成上述操作后,您可以按住Ctrl键单击并将场景中的按钮,文本字段,标签等拖动到相应的ViewController,以使用IBOutlet,IBAction等访问视图中的项目。