response-native-navigation (wix) v2: размещение макета bottomTabs в стеке - PullRequest
0 голосов
/ 18 октября 2018

Это то, что я пытаюсь сделать, но получаю ошибку.Я установил корневую навигацию как bottomTabs (это похоже на главное меню приложения), у него есть два дочерних элемента, макет стека и компоновка компонентов.На экране стека я нажимаю какой-то другой экран (только макет компонента), и на этом макете компонента я хотел бы нажать новый экран с макетом bottomTabs - это были бы новые bottomTabs, так что нижние вкладки "главного меню", установленные через Navigation.setRoot, являютсятеперь скрыт, и пользователь видит это новое меню bottomTabs - только для этого экрана.Я получаю эту ошибку:

Exception '-[RNNTabBarController isCustomTransitioned]: unrecognized selector sent to instance 0x7f82e2876600'
was thrown
while invoking push on target RNNBridgeModule with params(
    push11,
    Component6, {
        children = ({
            children = ();
            data = {
                name = "mad.app.Dummy";
                options = {
                    bottomTab = {
                        text = tab1;
                    };
                };
            };
            id = Component9;
            type = Component;
        }, {
            children = ();
            data = {
                name = "mad.app.Smarty";
                options = {
                    bottomTab = {
                        text = "Tab 2";
                    };
                };
            };
            id = Component10;
            type = Component;
        });
        data = {};
        id = ee;
        type = BottomTabs;
    },
    3324,
    3325
)
    callstack: (
    0   CoreFoundation                      0x000000010388c29b __exceptionPreprocess + 331
    1   libobjc.A.dylib                     0x0000000101f6f735 objc_exception_throw + 48
    2   CoreFoundation                      0x00000001038aafa4 -[NSObject(NSObject) doesNotRecognizeSelector:] + 132
    3   UIKitCore                           0x000000010849d163 -[UIResponder doesNotRecognizeSelector:] + 287
    4   CoreFoundation                      0x0000000103890fb6 ___forwarding___ + 1446
    5   CoreFoundation                      0x0000000103892e88 _CF_forwarding_prep_0 + 120
    6   TestMobileApp                    0x0000000100b567f8 -[RNNCommandsHandler push:layout:completion:rejection:] + 2840
    7   TestMobileApp                    0x0000000100b18a88 -[RNNBridgeModule push:componentId:layout:resolver:rejecter:] + 392
    8   CoreFoundation                      0x000000010389311c __invoking___ + 140
    9   CoreFoundation                      0x00000001038905b5 -[NSInvocation invoke] + 325
    10  CoreFoundation                      0x0000000103890a06 -[NSInvocation invokeWithTarget:] + 54
    11  TestMobileApp                    0x0000000100c1791a -[RCTModuleMethod invokeWithBridge:module:arguments:] + 2810
    12  TestMobileApp                    0x0000000100cd3646 _ZN8facebook5reactL11invokeInnerEP9RCTBridgeP13RCTModuleDatajRKN5folly7dynamicE + 790
    13  TestMobileApp                    0x0000000100cd315f _ZZN8facebook5react15RCTNativeModule6invokeEjON5folly7dynamicEiENK3$_0clEv + 127
    14  TestMobileApp                    0x0000000100cd30d9 ___ZN8facebook5react15RCTNativeModule6invokeEjON5folly7dynamicEi_block_invoke + 25
    15  libdispatch.dylib                   0x000000010697c51d _dispatch_call_block_and_release + 12
    16  libdispatch.dylib                   0x000000010697d587 _dispatch_client_callout + 8
    17  libdispatch.dylib                   0x00000001069893bc _dispatch_main_queue_callback_4CF + 1290
    18  CoreFoundation                      0x00000001037ef7f9 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 9
    19  CoreFoundation                      0x00000001037e9e86 __CFRunLoopRun + 2342
    20  CoreFoundation                      0x00000001037e9221 CFRunLoopRunSpecific + 625
    21  GraphicsServices                    0x000000010cd271dd GSEventRunModal + 62
    22  UIKitCore                           0x00000001080b6115 UIApplicationMain + 140
    23  TestMobileApp                    0x0000000100a79420 main + 112
    24  libdyld.dylib                       0x0000000104a64551 start + 1
)

Если я просто нажимаю макет компонента - все в порядке, поэтому проблема должна быть с макетом bottomTabs.

Вот мой код:

index.js -> Настройка корня навигации

Navigation.events().registerAppLaunchedListener(() => {


 Navigation.setRoot({
    root: {
      bottomTabs: {
        children: [
          {
            stack: {
              children: [
                {
                  component: {
                    name: "mad.app.LogsScreen",
                    options: {
                      topBar: {
                        visible: false,
                        drawBehind: true
                      }
                    }
                  }
                }
              ],
              options: {
                bottomTab: {
                  text: "Tab 1",
                  testID: "tab1-btn"
                }
              }
            }
          },
          {
            component: {
              name: "mad.app.Dummy",
              options: {
                bottomTab: {
                  text: "Tab 2",
                  testID: "tab2-btn"
                }
              }
            }
          }
        ]
      }
    }
  });
});

На первой вкладке (mad.app.LogsScreen) есть кнопка, которая помещает этот макет в стек:

const screenLayout = {
  component: {
    name: "mad.app.Creator.CreatorScreen",
    options: {
      topBar: {
        rightButtons: [
          {
            text: "Done",
            id: "mad.app.Creator.CreatorScreen.header.right.1"
          }
        ]
      },
    }
  }
};

export default screenLayout;

На этом нажатомпри нажатии кнопки «Готово» я хочу нажать макет с помощью новых bottomTabs, это макет, который я пытался нажать:

const screen = {
  bottomTabs: {
    id: "ee",
    children: [
      {
        component: {
          name: "mad.app.Dummy",
          options: {
            bottomTab: {
              text: "tab1"
            }
          }
        }
      },
      {
        component: {
          name: "mad.app.Smarty",
          options: {
            bottomTab: {
              text: "Tab 2"
            }
          }
        }
      }
    ]
  }
};

export default screen;

Но тогда я получаю сообщение об ошибке, приведенное выше, если я просто пытаюсь нажать компонентраскладка так:

const screen = {
    component: {
        name: "mad.app.Dummy",
    }
}

Тогда все работает нормально.Можно ли добиться того, чего я хочу?Если да, то как?

Заранее спасибо!

...