ProMotion, Teacup 및 MMDrawerController 조합을 사용하고 있습니다. 응용 프로그램을로드 할 때 모든 것이 제대로 작동하지만 한 화면에서 다른 화면으로 변경하려고하면 superview가 0이므로 Teacup에서 오류가 발생합니다. 교사 오류 : *** Terminating app due to uncaught exception 'NoMethodError', reason: 'calculations.rb:15:in calculate:': undefined method 'bounds' for nil:NilClass (NoMethodError)
입니다. view.superview가 null이기 때문에 그것은 던져지고 있습니다.RubyMotion : 새 화면을 연 후 슈퍼 뷰 손실
초보자이지만 Teacup 오류는 모든 것을 설정 한 방식의 더 큰 문제 또는 MMDrawerController와의 비 호환성 문제 일뿐입니다.
그래서 앱이로드되고 주간 화면으로 이동하며 주간 화면에서는 버튼이있는 주간 버튼을 추가하여 주간 화면으로 돌아갑니다. 해당 버튼을 클릭하면 오류가 발생합니다.
화면/root_screen.rb
class RootScreen < MMDrawerController
include PM::ScreenModule
title 'Schedule'
def self.new(args = {})
alloc.init.tap do |root_screen|
root_screen.on_create(args)
end
end
def centerViewController=(centerViewController)
super
self.title = centerViewController.title
end
def on_create(args={})
super
self.leftDrawerViewController = Screen::MenuScreen.new(nav_bar: false)
self.rightDrawerViewController = nil
self.centerViewController = week_screen
leftDrawerButton = MMDrawerBarButtonItem.alloc.initWithTarget self, action:"show_menu:"
navigationItem.setLeftBarButtonItem leftDrawerButton, animated:true
end
def will_appear
self.title = centerViewController.title
end
def show_menu(sender)
toggleDrawerSide MMDrawerSideLeft, animated:true, completion: nil
end
def week_screen
@week_screen ||= Screen::WeekScreen.new
end
end
- (정말 같은 화면으로 돌아 가기 위해 버튼을 한 페이지 응용 프로그램이없는 나는 여기에 코드를 단순화했습니다) 화면/week_screen.rb
module Screen
class WeekScreen < PM::Screen
title ''
stylesheet :week_styles
include Teacup::TableViewDelegate
@@cell_identifier = nil
@selected_date = nil
def will_appear
super
# mm_drawerController.title = title
view.subviews.each &:removeFromSuperview
layout(view, :main_view) do |main_view|
week_table
subview(UIView, :program_nav) do
@week_btn = subview(UIButton.buttonWithType(UIButtonTypeRoundedRect), :week_btn)
end
@week_btn.when_tapped do
open WeekScreen.new(nav_bar: true)
end
end
end
# a bunch of table stuff removed here to keep this clean-ish
end
end
스타일/week_styles.rb
Teacup::Stylesheet.new :week_styles do
style :main_view,
frame: [[0,30], ["100%", "100% - 30]]
style :program_nav,
frame: [[0, "100% - 78"], ["100%", 78]],
backgroundColor: "#f1f2f2".to_color,
autoresizingMask: (UIViewAutoresizingFlexibleLeftMargin |
UIViewAutoresizingFlexibleRightMargin |
UIViewAutoresizingFlexibleTopMargin)
style :week_btn,
center_x: '50%',
center_y: '50%',
width: 36,
height: 36,
backgroundImage: UIImage.imageNamed("week-view-btn")
end