2016-07-06 8 views
0

Ich habe überall in den ProMotion-Dokumenten und Beispielen gesucht, aber ich kann keine Möglichkeit finden, ein TableScreen-Layout zu ändern, insbesondere die vertikale Startposition der TableView-Zelle.ProMotion TableScreen-Layout ändern

Ich habe eine UIView oben auf meinem Bildschirm, um einige Schaltflächen anzuzeigen, und die TableView-Zellen sollten darunter beginnen, aber im Moment sind sie übereinander.

Ich habe es sogar geschafft, die Tableview mit der REPL Konsole zu bewegen:

rmq(4496872960).nudge d: 10 

wo 4496872960 die ID meines UITableViewWrapperView Objekt ist, aber ich habe keine Ahnung, wo das Layout setzen für diesen Objektkoordinaten in Code .

Mein Bildschirm Code:

class HomeScreen < PM::TableScreen 
    title I18n.t("home_screen.title") 
    tab_bar_item title: I18n.t("home_screen.title"), item: "icon-home_32x32.png" 
    row_height :auto, estimated: 30 
    stylesheet HomeScreenStylesheet 

    def on_load 
    @matches = [{attributes: {status: "dummy1", player2: {email: "[email protected]"}}},{attributes: {status: "dummy2", player2: {email: "[email protected]"}}}] 
    append(TopHomeView, :top_home_view) 
    set_nav_bar_button :left, title: I18n.t("home_screen.sign_out_label"), image: image.resource("icon-logout-32x32.png"), action: :sign_out 
    set_nav_bar_button :right, title: (Auth.current_user ? Auth.current_user["email"] : ""), image: image.resource("icon_user_50x50.png"), action: :open_profile 

    load_async 
    end 

    def table_data 
    [{ 
     cells: @matches.map do |match| 
     { 
      title: match[:attributes][:player2][:email], 
      subtitle: match[:attributes][:status], 
      action: :play_round, 
      arguments: { match: match } 
     } 
     end 
    }] 
    end 

EDIT:

ich versucht habe gehalten, diese zu lösen, und ich habe jetzt einen Stil zu meinem UITableViewWrapperView Objekt wie folgt hinzugefügt:

def viewDidLoad 
    super 
    rmq(UITableViewWrapperView).apply_style(:style_for_table_wrapper) 
end 

In In meinem Stylesheet kann ich also alles stylen: background_color, hidden status, aber der Frame Style wird einfach ignoriert.

def top_home_view(st) 
    st.frame = {l:20, t: 20, w: 300, h: 60} 
    st.background_color = color.white 
end 

Antwort

0

Wie in dieser Github Ausgabe angegeben:

https://github.com/infinitered/ProMotion/issues/784#issuecomment-230962988

die Lösung hier liegt eine Kopfansicht für die TableScreen bei der Umsetzung. Auf diese Weise können wir auf der Oberseite der Zellen für den eigenen Gebrauch eine Fläche haben:

eine table_header_view definieren eine Instanz eines UIView Rückkehr (erforderlich):

class HomeScreen < PM::TableScreen 
    # ... 
    def table_header_view 
    create!(TopHomeView, :top_home_view) 
    end 

Beachten Sie, dass die „bang-Methode“ (erstellt!) wird eine Instanz von UIView zurückgeben.

Guthaben geht an https://github.com/andrewhavens für das Aufräumen

Verwandte Themen