2013-04-20 79 views
0

我剛剛開始在RubyMotion中使用Rails中的歷史記錄。我有一個簡單的應用程序與兩個意見。第一個視圖是一個tableView,它列出了一個'categories'數組。每個類別都有詳細視圖。我最初設置的細節視圖也是一個tableView,但我改用UILabel,因爲每個類別只有一小段靜態文本。我着眼於在細節中使用單行表格,並通過內容更改單元格高度,但決定因爲我將只需要一個單元格......它可能是不恰當地使用表格,並更好地使用UILabel(到目前爲止正如我可以告訴的是對於靜態文本......不僅僅是一個「標籤」)。對此的意見或想法是非常受歡迎的。如何在ruby運動中創建textView?

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 ...這就是爲什麼沒有表(你可以看到我已經開始轉換到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繼承。這看起來就像刪除或更改繼承一樣簡單。我試過......但是,這打破了應用程序。我懷疑這些可能工作,一旦我正確地從類別view_controller中的細節調用中刪除'UITableViewStyleGrouped'。

class DetailViewController 

class DetailViewController < UIViewController 

此外,當我在details_view_controller內部viewDidLoad方法設置背景顏色不具有任何影響。不知道爲什麼。

self.view.backgroundColor = UIColor.redColor 

因此,回顧一下。根視圖是靜態類別的tableView,每個類別都有一個詳細視圖。點擊列表中的類別時,將加載詳細視圖。細節視圖是一個簡單的視圖,UILabel元素顯示該類別的詳細描述。

我希望有人能指點我學習動作的方向,並使這段代碼按預期工作。謝謝

回答

2

它看起來像你有很多的背景閱讀要做。不是一個問題 - 我們都在一個地方。但是你遇到的問題似乎是對Cocoa Touch的普遍缺乏瞭解。

我會推薦閱讀官方的Apple指南,包括View Controller的。

https://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/Introduction/Introduction.html

如果你寧願只開始編碼,推廣將是你最好的朋友。

https://github.com/clearsightstudio/ProMotion

推廣抽象了很多凌亂的Objective-C的,並允許您只需打開和關閉屏幕以簡單的命令。

class AppDelegate < ProMotion::AppDelegateParent 
    def on_load 
    open ListScreen.new(nav_bar: true) 
    end 
end 

class ListScreen < ProMotion::TableScreen 
    def table_data 
    [{ 
     title: "", 
     cells: [{ 
     title: "Cell 1", 
     action: :selected_cell, 
     arguments: { cell_number: 1 } 
     }, { 
     title: "Cell 2", 
     action: :selected_cell, 
     arguments: { cell_number: 2 } 
     }] 
    }] 
    end 

    def selected_cell(args={}) 
    if args[:cell_number] == 1 
     open DetailScreen 
    elsif args[:cell_number] == 2 
     open OtherScreen 
    end 
    end 
end 

class DetailScreen < ProMotion::Screen 
    title "Detail" 

    def will_appear 
    # Set up your UILabel and whatnot here 
    end 
end 
+0

謝謝Jamon。你爲我回答了兩個單獨的帖子。我肯定會研究可可觸摸。你建議我讀什麼?我假設文檔...但是,您在答案中的文字留下了您推薦的內容。 – hellion 2013-04-21 06:58:26

+0

我看到你的編輯內容。謝謝你的投入! – hellion 2013-04-21 06:59:43

+0

你打賭。如果你有iPhone或iPad,我會在iBook上推薦iOS和Cocoa編程指南。他們自由,冗長,但值得一看。此外,有關iTunes U的Paul Hegarty講座很有價值。通過ProMotion教程和屏幕錄像看看 - 你會在那裏找到很多東西。用RubyMotion玩得開心 - 這太棒了! – 2013-04-21 07:05:55