我刚刚开始使用 RubyMotion,并在 Rails 中有过一段历史。我有一个带有两个视图的简单应用程序。第一个视图是一个列出“类别”数组的 tableView。每个类别都有一个详细视图。我最初将详细视图也设置为 tableView,但由于每个类别只有一小段静态文本,我将更改为 UILabel。我考虑在细节中使用单行表格并根据内容更改单元格高度,但决定因为我只需要一个单元格......这可能是表格使用不当和更好地使用 UILabel (到目前为止我可以说是静态文本......不仅仅是一个“标签”)。非常欢迎对此提出意见或想法。
category_view_controller.rb
因此,在我现有的 category_view_controller 中,当从类别视图控制器的类别列表中选择一行时,我有以下方法推送详细信息视图控制器。因为,现在我正在 app_deligate.rb 中静态地创建我的类别及其属性(标签和描述)。这在 sim 中运行良好。
def tableView(tableView, didSelectRowAtIndexPath:indexPath)
case indexPath.section
when 0
cat, label, desc = Categories.categories_list[indexPath.row]
detailsVC = DetailViewController.alloc.initWithStyle(UITableViewStyleGrouped, category:cat, label:label, description:desc)
navigationController.pushViewController(detailsVC, animated:true)
end
tableView.deselectRowAtIndexPath(indexPath, animated:true)
end
DetailViewController.rb。
这个控制器继承自 UITableViewController。下面的代码已经被修改以摆脱 tableView...这就是为什么没有 table(你可以看到我从哪里开始更改为 UILabel)。使用一个简单的白色标签也可以很好地加载,其中包含我在 add_deligate 文件中设置的详细信息文本。
class DetailViewController < UITableViewController
def initWithStyle(style, category:cat, label:label, description:desc)
initWithStyle(style)
@category = cat
@description = desc
@label_text = label
self
end
def viewDidLoad
super
self.view.backgroundColor = UIColor.redColor
@label = UILabel.alloc.initWithFrame([[20, 50], [280, 80]]).tap do |label|
label.translatesAutoresizingMaskIntoConstraints = false
label.text = @description
label.lineBreakMode = UILineBreakModeTailTruncation
label.numberOfLines = 0
label.sizeToFit
label.textColor = UIColor.colorWithHue(0.0, saturation:0.0, brightness:0.40, alpha:1.0)
self.view.addSubview(label)
end
end
end
我的困惑
我不知道如何删除 tableView 并仅通过 UILabel 使用简单的静态文本。或者,也许还有更好的方法。
我知道我需要在调用 details_view_controller 的 categories_views_controller 中更改这一行。此行仍在引用 UITableViewStyleGrouped...并且不应该,因为没有要设置样式的表格。
detailsVC = DetailViewController.alloc.initWithStyle(UITableViewStyleGrouped, category:cat, label:label, description:desc)
我尝试简单地删除'initWithStyle ...但是,这会破坏应用程序。
detailsVC = DetailViewController.alloc.init(category:cat, label:label, description:desc)
我还需要 details_view_controller 不继承自 < UITableViewController. 这看起来就像删除或更改继承一样简单。我试过......但是,这会破坏应用程序。我怀疑一旦我从 category_view_controller 的详细信息调用中正确删除了“UITableViewStyleGrouped”,其中任何一个都可能起作用。
class DetailViewController
和
class DetailViewController < UIViewController
此外,当我在 details_view_controller 内的 viewDidLoad 方法中设置背景颜色时,它没有任何效果。不知道为什么。
self.view.backgroundColor = UIColor.redColor
所以,回顾一下。根视图是静态类别的tableView,每个类别都有一个详细视图。点击列表中的类别时会加载详细视图。详细信息视图是一个简单的视图,其中包含一个显示类别详细描述的 UILabel 元素。
我希望有人能指出我学习动作的方向并使这段代码按预期工作。谢谢