如何从 bb 10 级联中的 listview 按钮单击事件导航到另一个页面?

Posted

技术标签:

【中文标题】如何从 bb 10 级联中的 listview 按钮单击事件导航到另一个页面?【英文标题】:How to navigate to another page from listview button click event in bb 10 cascades? 【发布时间】:2013-02-20 11:06:07 【问题描述】:

单击列表视图按钮时,我需要推送一个页面。我已经尝试了下面的编码,但它不起作用。

ListItemComponent 
    type: "imageItem"
    Container 
        id: publicimageItem
         ......

         ......

        ImageButton 
            defaultImageSource: "asset:///defaultimg.png"
            pressedImageSource: "asset:///pressedimg.png" 

            onClicked: 
                var new_page = publicimageItem.ListItem.view.nextpage.createObject();
                publicimageItem.ListItem.view.navigationPane.push(new_page);
            
            attachedObjects: [
                ComponentDefinition 
                    id: nextpage
                    source: "NextPage.qml"
                
            ]
        // ImageButton
    // Container
// ListView

当我在列表视图之外尝试时,它会毫无问题地进入下一页。

【问题讨论】:

首先,将此处的代码 (developer.blackberry.com/cascades/download/releasenotes/…) 添加到您的 main.cpp 中,以便在控制台中获得输出。这对于添加调试语句和显示错误很有用。 它还有助于测试/调试以将 javascript 代码块包装在 try..catch 中并将错误输出到控制台(如果您已经实现了上面 barry 的建议)。通常,诸如“找不到对象”之类的错误不会输出错误,只是默默地失败。 你找到解决办法了吗? 【参考方案1】:

使用以下代码将对象存储到全局变量的另一种最简单的方法对我来说很好。

     onCreationCompleted: 
     Qt.tabbedPane = tabbedPane;
     Qt.homeTab = homeTab;
       

在这里,我在页面创建完成时将 tabbedPane 存储在全局变量 Qt.tabbedPane 中。现在我可以使用 Qt.tabbedPane 从 ListItemComponent 访问它。

在您的情况下,将导航窗格存储到 Qt.navigationPane=NavigationId,然后尝试从 ListItemComponent 作为 Qt.navigationPane 访问它。

希望它会有所帮助。

希望对你有帮助。

【讨论】:

【参考方案2】:

建议NextPage.qml 的路径和页面本身有效且设置正确,我建议将onClicked() 中的代码更改为以下内容:

var new_page = nextpage.createObject();
navigationPane.push(new_page);

请确保在此处可以访问 navigationPane。启用控制台日志记录(或使用终端 slog2info 实用程序)可能是一个好主意,如前面提到的barry。这样您就可以看到您的代码发生了什么以及原因。

作为另一种变体,如果您想通过与整个列表项(而不是其中的特定小部件)交互来导航到其他页面,您需要将相同的代码放在 onTriggered() 插槽中:

ListView 
    ListItemComponent 
        type: "imageItem"
        Container 
            id: publicimageItem
             ......
        // Container
    // ListItemComponent

    onTriggered: 
        var new_page = nextpage.createObject();
        navigationPane.push(new_page);
    

    attachedObjects: [
        ComponentDefinition 
            id: nextpage
            source: "NextPage.qml"
        
    ]    
 // ListView    

【讨论】:

嗨,如果我使用 onTrigger 整个列表正在单击,是否有任何方法可以单击单个按钮,而不是需要单击单个按钮单击事件-谢谢 “整个列表都在点击”是什么意思?根据documentation,当用户触发列表项时会发出此信号。如果要处理列表项中小部件的特定信号,则需要绑定到该小部件的适当信号,即onClicked()Button 我有这个问题:ReferenceError:找不到变量:navigationPane navigationPaneNavigationPane 对象实例的 id。您可以将其更改为分配给您的 NavigationPane 对象 ID 的任何内容。在此处查看使用示例 - developer.blackberry.com/native/reference/cascades/…

以上是关于如何从 bb 10 级联中的 listview 按钮单击事件导航到另一个页面?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 bb 级联中使用带有 QNetWorkRequest 的身份验证详细信息?

防止黑莓10级联中listview标题上的onTriggered事件?

黑莓级联中的json数组listview

如何从黑莓10级联中的复选框选定项目中获取值..?

在级联中解析 JSON

如何在级联中设置 UIPickerView