在UINavigationController上创建一个带有后退箭头形状的leftBarButtonItem

2 浏览
0 Comments

在UINavigationController上创建一个带有后退箭头形状的leftBarButtonItem

我有一个带有导航控制器的视图,我以模态方式显示它,并且我想添加一个形状类似于大多数splitViewController中使用的默认左箭头按钮的返回按钮。

我可以创建一个基本按钮,但我真的想要左箭头形状 - 这是我现在的代码:

/* 设置标题和导航栏项目 */

self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"返回缩略图" style:UIBarButtonItemStylePlain target:self action:@selector(backToThumbnails:)] autorelease];

这里我只看到了3个风格选项?非常感谢任何建议!

0
0 Comments

问题的原因是创建一个带有箭头形状的`leftBarButtonItem`在`UINavigationController`中是不被公开的API的一部分。解决方法是需要创建一个自定义的`UIBarButton`并添加一个图片作为箭头形状。

很不幸,创建一个像那样的按钮不是公开API的一部分,你需要创建一个带有图片的自定义`UIBarButton`。

感谢,我搜索了文档并发现这就是情况 - 如果你问我,这样留下来有点奇怪,但是如果这是你想在SDK中实现的功能,可以提交一个反馈给Apple。

0
0 Comments

问题出现的原因:开发者想要在UINavigationController的左侧添加一个带有箭头的返回按钮,但是在原生的UIKit框架中并没有直接提供这样的按钮样式。

解决方法:开发者可以使用第三方开源库Three20来实现这个功能。Three20是由Facebook应用程序的开发者创建的一个开源库,其中包含了一个名为TTButton的组件,它与UIButton非常相似,其中提供了一个带有箭头的返回按钮样式。开发者可以使用Three20库中的TTButton来创建一个带有箭头的左侧按钮,并将其设置为UINavigationController的leftBarButtonItem。

以下是使用Three20库中的TTButton来创建带有箭头的左侧按钮的示例代码:

#import 
...
TTButton *backButton = [TTButton buttonWithStyle:TTButtonStyleBackBarTitle];
[backButton setTitle:@"Back" forState:UIControlStateNormal];
[backButton addTarget:self action:@selector(backButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *backBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];
self.navigationItem.leftBarButtonItem = backBarButtonItem;

上述代码首先导入了Three20库的头文件,然后创建了一个TTButton对象,并设置其样式为TTButtonStyleBackBarTitle,表示带有箭头的返回按钮样式。接下来设置按钮的标题和点击事件。最后,将TTButton对象包装在一个UIBarButtonItem中,并将其赋值给UINavigationController的leftBarButtonItem属性,从而将其显示在导航栏的左侧。

通过以上代码,开发者可以实现在UINavigationController中创建一个带有箭头的返回按钮。尽管使用Three20库可能会增加项目的依赖和复杂性,但它提供了很多其他功能,因此对于需要使用这些功能的项目来说是值得考虑的选择。

0