我正在尝试使用 MenuLayer 在 pebble 上创建一个应用程序。我的意图是创建菜单,然后使用 MenuLayer 创建子菜单。
我使用“menu_layer_set_callbacks”方法做了一些基本的实现,并为每个子菜单层注册了回调方法。但是,现在我意识到它变得太混乱了。
我想知道框架中是否提供了任何简单的方法来满足这个要求。
谢谢。
KK
我正在尝试使用 MenuLayer 在 pebble 上创建一个应用程序。我的意图是创建菜单,然后使用 MenuLayer 创建子菜单。
我使用“menu_layer_set_callbacks”方法做了一些基本的实现,并为每个子菜单层注册了回调方法。但是,现在我意识到它变得太混乱了。
我想知道框架中是否提供了任何简单的方法来满足这个要求。
谢谢。
KK
我不知道你最终得到了什么,但是对于我的项目,我做了一组子窗口但重复使用相同的回调,你可以传递自定义数据让每个人知道它是什么类型。然后只需根据需要推送所需的子窗口
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
});
}