我有两个控制器。在第一个控制器上,我有一个添加按钮。单击此按钮会向用户显示包含文本字段的第二个控制器。但是,文本字段未正确显示。看起来他们需要从顶部获得保证金。如此截图所示
这是我的代码
第一个控制器
class OneController < UITableViewController
....
def viewDidLoad
super
rmq.stylesheet = OneControllerStylesheet
view.tap do |table|
table.delegate = self
table.dataSource = self
rmq(table).apply_style :table
end
self.navigationItem.rightBarButtonItems = [UIBarButtonItem.alloc.initWithBarButtonSystemItem(
UIBarButtonSystemItemAdd,
target: self,
action: :addSomething)]
end
def addSomething
self.add_category_controller.player = nil
ctlr = UINavigationController.alloc.initWithRootViewController(self.add_something_controller)
ctlr.modalTransitionStyle = UIModalTransitionStyleCoverVertical
ctlr.delegate = self
self.presentViewController(ctlr, animated:true, completion:nil)
end
def add_something_controller
@add_something_controller ||= TwoController.new.tap do |ctlr|
ctlr.navigationItem.leftBarButtonItem = UIBarButtonItem.alloc.initWithBarButtonSystemItem(
UIBarButtonSystemItemCancel,
target: self,
action: :cancelAdd)
ctlr.navigationItem.rightBarButtonItem = UIBarButtonItem.alloc.initWithBarButtonSystemItem(
UIBarButtonSystemItemDone,
target: self,
action: :doneAdd)
ctlr.navigationItem.rightBarButtonItem.enabled = false
end
end
...
end
第二个控制器
class TwoCategoryController < UIViewController
...
def viewDidLoad
puts "viewDidLoad"
self.view.backgroundColor = UIColor.groupTableViewBackgroundColor
self.view.addSubview(self.first_field)
self.view.addSubview(self.last_field)
end
...
end
答案 0 :(得分:0)
您的视图控制器需要将automaticallyAdjustsScrollViewInsets
设置为NO。
iOS 7的默认设置是滚动视图填满整个屏幕,包括“在”状态和导航栏下方。
或者,您可以使导航和状态栏保持半透明,只需在文本视图上方添加填充。
答案 1 :(得分:0)
在iOS 6(及之前版本)中,您的视图的原点设置为{x:0,y:64}(在窗口坐标系列中),位于导航栏下方。
在iOS 7中,我们现在已经全屏了#34;视图几乎所有时间。这就是你在这里碰到的东西。您的视图位于{x:0,y:0},因此位于导航和状态栏下方。
我认为解决此问题的正确方法是在控制器视图上使用约束(self.view
中的TwoCategoryController
),然后您可以使用UIViewController#topLayoutGuide
和#bottomLayoutGuide
来将它放在可见区域内。
那将是&#34;正确的&#34;方式,但您也可以轻松自己,只需找出导航栏(44)+状态栏(20)的高度,并将其存储在变量或方法中,然后只需更正文本字段框架低于该值。
答案 2 :(得分:0)
我不是rubymotion开发人员,但找到this回答。希望它会有所帮助:)