Rails の歴史を持つ RubyMotion を始めたばかりです。2 つのビューを持つシンプルなアプリがあります。最初のビューは、「カテゴリ」の配列をリストする tableView です。各カテゴリには詳細ビューがあります。私は当初、詳細ビューを tableView にも設定しましたが、カテゴリごとに静的テキストの小さな段落しかないため、UILabel に変更しています。詳細に1行のテーブルを使用し、コンテンツでセルの高さを変更することを調べましたが、必要なセルは1つだけなので決定しました...おそらくテーブルの不適切な使用とUILabelのより適切な使用でした(これまでのところ、これは私が言えるように、静的テキスト用です...単なる「ラベル」ではありません)。これに関する意見やアイデアは大歓迎です。
category_view_controller.rb
したがって、私の既存の category_view_controller には、カテゴリ ビュー コントローラーのカテゴリのリストから行が選択されたときに、詳細ビュー コントローラーをプッシュする次のメソッドがあります。現在、app_deligate.rb で静的に属性 (ラベルと説明) を使用してカテゴリを作成しています。これはシムでうまく機能します。
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 を取り除くように変更されています...これがテーブルがない理由です (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 を呼び出す category_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)
< UITableViewController から継承しないようにするには、details_view_controller も必要です。これは、継承を削除または変更するのと同じくらい簡単に思えます。私は試しました...しかし、これはアプリを壊します。category_view_controller の詳細呼び出しから「UITableViewStyleGrouped」を正しく削除すると、これらのいずれかが機能する可能性があると思われます。
class DetailViewController
と
class DetailViewController < UIViewController
また、details_view_controller 内の viewDidLoad メソッドで背景色を設定しても効果はありません。理由がわからない。
self.view.backgroundColor = UIColor.redColor
では、要約します。ルート ビューは静的カテゴリの tableView であり、各カテゴリには詳細ビューがあります。リスト内のカテゴリをタップすると、詳細ビューが読み込まれます。詳細ビューは、そのカテゴリの詳細な説明を表示する UILabel 要素を含む単純なビューです。
誰かがモーションを学習し、このコードを意図したとおりに機能させる方向に向けてくれることを願っています。ありがとう