В диалоге в dm-скрипте не работают вкладки - PullRequest
1 голос
/ 28 апреля 2020

Почему вкладки не отображаются в сценарии dm в диалоговых окнах?


Когда я создаю простой диалог с тремя вкладками (и разметкой таблицы), вкладки не отображаются. Появится следующий диалог:

Dialog without tabs

Я ожидаю что-то вроде этого:

Expected Dialog

Я использовал следующий пример кода:

class TestDialog : UIFrame{
    TagGroup createContent(object self){
        number total_length = 3
        TagGroup tabs = DLGCreateTabList(total_length);

        for(number i = 0; i < total_length; i++){
            TagGroup content = DLGCreateGroup();
            content.DLGLayout(DLGCreateTableLayout(3, 1, 0));

            TagGroup l = DLGCreateLabel("Row 1 of tab " + (i + 1));
            content.DLGAddElement(l);

            TagGroup v = DLGCreateLabel("Row 2 of tab " + (i + 1));
            content.DLGAddElement(v);

            TagGroup c = DLGCreateCheckBox("Checkbox of tab " + (i + 1));
            content.DLGAddElement(c);

            TagGroup tab = tabs.DLGAddTab("Tab " + (i + 1));
            tab.DLGAddElement(content);
        }

        return tabs;
    }

    object init(object self){
        return self.super.init(self.createContent())
    }
}

object dialog = alloc(TestDialog).Init();
dialog.pose();

1 Ответ

1 голос
/ 28 апреля 2020

Хорошо, я это выяснил. Кажется, что добавление списка вкладок, так как прямой дочерний элемент диалога не работает. В списке вкладок должна быть группа .

Dialog with tabs

class TestDialog : UIFrame{
    TagGroup createContent(object self){
        number total_length = 3
        TagGroup tabs = DLGCreateTabList(total_length);

        for(number i = 0; i < total_length; i++){
            TagGroup content = DLGCreateGroup();

            // ...

            TagGroup tab = tabs.DLGAddTab("Tab " + (i + 1));
            tab.DLGAddElement(content);
        }

        // this is the important part
        TagGroup wrapper = DLGCreateGroup();
        wrapper.DLGAddElement(tabs);

        return wrapper;
    }

    object init(object self){
        return self.super.init(self.createContent())
    }
}

object dialog = alloc(TestDialog).Init();
dialog.pose();
...