在 Xamarin 中使用 tvOS 导航栏

导航栏可以添加到视图顶部,以显示标题和可选的导航栏按钮。 当用户从主页(如表视图、集合或菜单)导航到显示所选项详细信息的子视图时,通常会使用这些按钮。

示例导航栏

除了标题(显示在中心)外,导航栏还可以在栏的左侧和右侧包含一个或多个导航栏按钮 (UIBarButtonItem)。

重要

默认情况下,导航栏是完全透明的。 应注意确保导航栏的内容比其下面的内容更具可读性。 例如,当表视图或集合中的内容滚动到其下方时。

在 Xamarin.tvOS 应用中使用导航栏的最简单方法是使用 iOS 设计器将其添加到应用的 UI。

  1. 在“Solution Pad”中,双击 Main.storyboard 文件并将其打开进行编辑

  2. 从“工具箱”拖动“导航栏”,并将其拖放到屏幕顶部的“视图”上

    导航栏

  3. 双击“导航栏”以选择“导航项”。 在“Properties Pad”的“小组件”选项卡中,可以设置“标题”

    设置标题

  4. 接下来,可以将一个或多个“导航栏按钮项”添加到导航栏的任一端

    条形按钮项

  5. 最后,将“导航栏按钮项”连接到“属性资源管理器”的“事件”选项卡中的“操作”

    条形按钮项操作

  6. 保存所做更改。

重要

虽然可以在 iOS 设计器中为 UI 元素(如 UIButton)分配 TouchUpInside 等事件,但永远不会调用它,因为 Apple TV 没有触摸屏,也不支持触摸事件。 创建 tvOS 用户界面元素的事件处理程序时,应始终使用 Primary Action 事件。

以下代码提供了有关三个不同的 BarButtonItems 上的事件处理程序示例:ShowFirstHotelShowSecondHotelShowThirdHotel。 单击每个项时,背景图像 HotelImage 将更改。 这是在视图控制器(示例 ViewController.cs)文件中编辑的:

using System;
using Foundation;
using UIKit;

namespace MySingleView
{
    public partial class ViewController : UIViewController
    {
        #region Constructors
        public ViewController (IntPtr handle) : base (handle)
        {
        }
        #endregion

        #region Override Methods
        public override void ViewDidLoad ()
        {
            base.ViewDidLoad ();
            // Perform any additional setup after loading the view, typically from a nib.
        }

        public override void DidReceiveMemoryWarning ()
        {
            base.DidReceiveMemoryWarning ();
            // Release any cached data, images, etc that aren't in use.
        }
        #endregion

        #region Custom Actions
        partial void ShowFirstHotel (UIBarButtonItem sender) {
            // Change background image
            HotelImage.Image = UIImage.FromFile("Motel01.jpg");
        }

        partial void ShowSecondHotel (UIBarButtonItem sender) {
            // Change background image
            HotelImage.Image = UIImage.FromFile("Motel02.jpg");
        }

        partial void ShowThirdHotel (UIBarButtonItem sender) {
            // Change background image
            HotelImage.Image = UIImage.FromFile("Motel03.jpg");
        }
        #endregion
    }
}

只要按钮的 Enabled 属性为 true,并且未被其他控件或视图覆盖,就可以使用 Siri Remote 将其设为焦点项。

有关使用情节提要的详细信息,请参阅你好,tvOS 快速入门指南

总结

本文介绍了如何设计和使用 Xamarin.tvOS 应用中的导航栏。