布莱恩F爱
向一位来自Portlandyobet英雄联盟的谷歌开发专家学习Angular、Web技术和Node.js。
广告 ·ultimatecourses.com
用终极课程学习Angular的正确方法

UIToolbar用于iOS中简单易用的工具栏

UIToolbar类提供了一种简便的方法来为用户创建工具栏。您经常会发现这些工具栏位于视图的底部。Cocoa touch为创建工具栏和向工具栏添加项提供了一个简单的实现。您可以通过编程方式创建工具栏,或者您可以使用故事板文件将工具栏添加到您的视图中。在本例中,我将使用interface builder添加工具栏。

向视图添加工具栏

开始

首先,在Xcode中打开故事板文件,这将打开接口构建器,这样您就可以在视图中可视化地添加工具栏。将工具栏从对象库拖到视图中,并将其放置在想要显示的位置。

从对象库添加工具栏

你可以点击默认添加的默认项目,它的标题是“item”,然后删除它。我们将添加每一个UIBarButtonItem在视图控制器中编程。在创建每个按钮项之前,我们需要在视图控制器中创建一个变量,该变量将在interface builder中引用工具栏对象。打开视图控制器头(.h)文件,并为IBOutlet:

@ property(,原子)IBOutlet UIToolbar*工具栏;

在这里,我们创建了一个新的类属性,它是IBOutlet类型的UIToolbar,用变量名声明工具栏。这个类变量将包含对我们的引用UIToolbar对象。这允许我们在代码中访问工具栏对象,我们将需要它来将项目添加到工具栏中。然后,打开你的视图控制器实现(.m)文件,为工具栏变量合成属性访问器:

@ synthesize工具栏;

接下来,您将使用connections inspector来创建一个新的outlet,以便将interface builder中的对象连接到IBOutlet变量。要做到这一点,您将首先选择界面构建器中的工具栏对象,转到连接检查器,然后点击拖动从旁边的圆圈新引用出口到视图控制器,由位于界面生成器中视图下方的橙色圆圈内的视图图标表示。

从连接检查器中创建一个新的引用出口

释放鼠标时,选择我们前面定义的工具栏属性。

选择工具栏属性

创建每个UIBarButtonItem

现在在interface builder中的对象和视图控制器代码中的属性之间建立了连接。我们现在可以使用这个工具栏变量来访问我们放置在视图中的工具栏实例。接下来,我们需要创建UIBarButtonItem为此,我将创建一个实例方法,名为createToolbar:。我将在视图成功加载后调用此方法,使用viewDidLoad:委托的方法。

-(无效)viewDidLoad{(超级viewDidLoad];//在加载视图后执行任何附加设置。(自我createToolbar];}

在createToolbar:方法中,我们将创建的实例UIBarButtonItem用于工具栏中的每个按钮。我们首先分配内存给UIBarButtonItem通过调用分配:类方法。然后,我们叫initWithTitle:风格:目标:行动:方法来使用所需的标题和样式初始化按钮。

在这个例子中,我将为样式使用UIBarButtonItemStyleBordered选项。我还将通过将目标指定为self来将目标设置为当前类。

最后,我将使用@ selector ()操作符。的@ selector ()运算符类似于C中的函数指针,或在JavaScript中传递对函数变量的引用。这将指定要调用的函数的代码与调用/执行该函数的代码解耦。下面是创建一个新按钮项的单行代码:

UIBarButtonItem*changeCategory=((UIBarButtonItem alloc]initWithTitle:@“改变类别”风格:UIBarButtonItemStyleBordered目标:自我行动:@ selector(goToChangeCategory:)];

我们还需要在按钮之间使用间隔器。您可以使用固定宽度的间隔器来定义按钮之间的间隔大小,也可以使用灵活的间隔器。

UIBarButtonItem*垫片=((UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace目标:自我行动:];

为工具栏创建了所有按钮之后,创建一个按钮数组,每个按钮之间有一个间隔。最后,您将调用UIToolbar上的setItems:方法。这是我完成的createToolbar:实例方法。

-(无效)createToolbar{UIBarButtonItem*changeCategory=((UIBarButtonItem alloc]initWithTitle:@“改变类别”风格:UIBarButtonItemStyleBordered目标:自我行动:@ selector(goToChangeCategory:)];UIBarButtonItem*difficultyExplanation=((UIBarButtonItem alloc]initWithTitle:@“困难是什么?”风格:UIBarButtonItemStyleBordered目标:自我行动:@ selector(goToDifficultyExplanation:)];UIBarButtonItem*垫片=((UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace目标:自我行动:];NSArray*buttonItems=(NSArray arrayWithObjects:垫片,changeCategory,垫片,difficultyExplanation,垫片,];(_toolbar setItems:buttonItems];}

最后,我们需要创建每个操作方法,它们将在按钮项被触摸时执行所需的操作。在我的例子中,我只需要执行到另一个视图的segue。

-(IBAction)goToChangeCategory:(UIButton*)发送方{(自我performSegueWithIdentifier:segueToWordCategoryView发送方:自我];}-(IBAction)goToDifficultyExplanation:(UIButton*)发送方{(自我performSegueWithIdentifier:segueToExplanationView发送方:自我];}

在这个例子中,我定义了静态的NSString变量来保存segue的标识符:

静态NSString*segueToWordCategoryView=@“ToWordCategory”;静态NSString*segueToExplanationView=@“ToExplanation”;

这些定义在实现文件的顶部,因此我可以重用segue标识符。现在,我们有一个带有两个条目的工具栏,它将把用户带到应用程序中的不同视图。

布莱恩F爱

嗨,我是布莱恩。我对TypeScript, Angular和Node.js感兴趣。我和我最好的朋友邦妮结婚了,我住在波特兰,我经常滑雪。