0

我正在尝试使用 MenuLayer 在 pebble 上创建一个应用程序。我的意图是创建菜单,然后使用 MenuLayer 创建子菜单。

我使用“menu_layer_set_callbacks”方法做了一些基本的实现,并为每个子菜单层注册了回调方法。但是,现在我意识到它变得太混乱了。

我想知道框架中是否提供了任何简单的方法来满足这个要求。

谢谢。

KK

4

1 回答 1

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
  }); 
}
于 2015-05-12T18:08:31.450 回答