2015-03-31 29 views
0

我想用MenuLayer在卵石上創建一個應用程序。我的意圖是使用MenuLayer創建菜單,然後創建子菜單。Iterative MenuLayer Pebble

我使用「menu_layer_set_callbacks」方法做了一些基本的實現,併爲每個子菜單層註冊了回調方法。但是,現在我意識到它太亂了。

我想知道在框架中是否有任何簡單的方法可以滿足這個要求。

謝謝。

KK

+2

請告訴我們一些代碼,因爲它是一個非常低質量的問題。 – Tyler 2015-03-31 23:48:08

回答

0

我不知道你是什麼結束了,但我的項目,我做了一組子窗口,但重複使用相同的回調,您可以通過自定義數據,讓每一個知道什麼類型它是。然後只需按需要的子窗口

void sub_window_load(Window* parentWindow) { 
    Layer* window_layer = window_get_root_layer(parentWindow); 
    const GRect bounds = layer_get_frame(window_layer); 

    MenuLayer* new_layer = menu_layer_create(bounds); 
    const int context = *((int*) window_get_user_data(parentWindow)); 

    if (context == ID_A)  s_A_layer = new_layer; 
    else if (context == ID_B) s_B_layer = new_layer; 

    menu_layer_set_callbacks(new_layer, window_get_user_data(parentWindow), (MenuLayerCallbacks){ 
    .get_num_sections = sub_menu_get_num_sections_callback, 
    .get_num_rows = sub_menu_get_num_rows_callback 
    /* etc */ 
    }); 
    menu_layer_set_click_config_onto_window(new_layer, parentWindow); 
    layer_add_child(window_layer, menu_layer_get_layer(new_layer)); 
} 

void createSubWin(Window** w, int* context) { 
    *w = window_create(); 
    window_set_user_data(*w, context); 
    window_set_window_handlers(*w, (WindowHandlers) { 
    .load = sub_window_load, 
    .unload = sub_window_unload 
    }); 
} 
相關問題