简体   繁体   English

如何使用xcode5在iOS7GM中添加自定义UITabbar

[英]How to add custom UITabbar in iOS7GM using xcode5

Hello i am begginer in iOS I have created custom tabbar and add UIbar button items which are work properly in iOS 6 but in iOS 7 GM and Xcode 5 It Show Problem..... This is my code for custom Tabbar ... 您好我是iOS的乞gg,我创建了自定义标签栏并添加了UIbar按钮项目,这些按钮在iOS 6中可以正常使用,但在iOS 7 GM和Xcode 5中显示问题.....这是我的自定义标签栏代码...

 TabBar=[[UITabBar alloc]initWithFrame:CGRectMake(0, 480, 320, 80)];
TabBar.autoresizingMask =UIViewContentModeTopRight | UIViewAutoresizingFlexibleWidth;

TabBar.tintColor=[UIColor blackColor];

UIButton *btn1=[[UIButton alloc]initWithFrame:CGRectMake(0, 0, 20, 20)];


[btn1 setTitle:@"Charge Details" forState:UIControlStateNormal];
btn1.titleLabel.font=[UIFont boldSystemFontOfSize:10.0];


[btn1 addTarget:self action:@selector(ChargeDetails) forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem *button1 = [[UIBarButtonItem alloc]initWithCustomView:btn1];

UIButton *btn2=[[UIButton alloc]initWithFrame:CGRectMake(0,0,40,40)];
btn2.titleLabel.font=[UIFont boldSystemFontOfSize:10.0];
[btn2 setTitle:@"View Contact Details"  forState:UIControlStateNormal];

[btn2 addTarget:self action:@selector(ViewContactDetails) forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem *button2 = [[UIBarButtonItem alloc]initWithCustomView:btn2];


TabBar.items=[NSArray arrayWithObjects:button1,button2,nil];

[self.view addSubview:TabBar];

This Code work in iOS 6 successfully but in iOS 7 GM I have problem ..actually custom Tabbar add on view successfully but when we add barbutton items this show error ...in this line 此代码可在iOS 6中成功运行,但在iOS 7 GM中我有问题..实际上自定义Tabbar已成功添加到视图中,但是当我们添加barbutton项时,此行显示错误...在此行

  TabBar.items=[NSArray arrayWithObjects:button1,button2,nil];

and this is error .... 这是错误..

   Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIBarButtonItem _updateViewForIdiom:positionItems:]: unrecognized selector sent to instance 0xbd3c6c0'
  *** First throw call stack:
    (
0   CoreFoundation                      0x04b9a5e4 __exceptionPreprocess + 180
1   libobjc.A.dylib                     0x018b58b6 objc_exception_throw + 44
2   CoreFoundation                      0x04c37903 -[NSObject(NSObject) doesNotRecognizeSelector:] + 275
3   CoreFoundation                      0x04b8a90b ___forwarding___ + 1019
4   CoreFoundation                      0x04b8a4ee _CF_forwarding_prep_0 + 14
5   UIKit                               0x006caefa -[UITabBar setItems:animated:] + 1218
6   UIKit                               0x006c9d9c -[UITabBar setItems:] + 48
7   HISWebService                       0x00021ee6 -[PatientLabDetailsViewController viewDidLoad] + 4566
8   UIKit                               0x0052e9a8 -[UIViewController loadViewIfRequired] + 696
9   UIKit                               0x0052ec44 -[UIViewController view] + 35
10  UIKit                               0x00548a72 -[UINavigationController _startCustomTransition:] + 778
11  UIKit                               0x00555757 -[UINavigationController _startDeferredTransitionIfNeeded:] + 688
12  UIKit                               0x00556349 -[UINavigationController __viewWillLayoutSubviews] + 57
13  UIKit                               0x0068f39d -[UILayoutContainerView layoutSubviews] + 213
14  UIKit                               0x00485dd7 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 355
15  libobjc.A.dylib                     0x018c781f -[NSObject performSelector:withObject:] + 70
16  QuartzCore                          0x03e1172a -[CALayer layoutSublayers] + 148
17  QuartzCore                          0x03e05514 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 380
18  QuartzCore                          0x03e05380 _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 26
19  QuartzCore                          0x03d6d156 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 294
20  QuartzCore                          0x03d6e4e1 _ZN2CA11Transaction6commitEv + 393
21  QuartzCore                          0x03d6ebb4 _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 92
22  CoreFoundation                      0x04b6253e __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 30
23  CoreFoundation                      0x04b6248f __CFRunLoopDoObservers + 399
24  CoreFoundation                      0x04b403b4 __CFRunLoopRun + 1076
25  CoreFoundation                      0x04b3fb33 CFRunLoopRunSpecific + 467
26  CoreFoundation                      0x04b3f94b CFRunLoopRunInMode + 123
27  GraphicsServices                    0x01ab59d7 GSEventRunModal + 192
28  GraphicsServices                    0x01ab57fe GSEventRun + 104
29  UIKit                               0x0041b94b UIApplicationMain + 1225
30  HISWebService                       0x0001f5fd main + 141
31  libdyld.dylib                       0x051be725 start + 0
32  ???                                 0x00000001 0x0 + 1
)
 libc++abi.dylib: terminating with uncaught exception of type NSException

Please solve my problem how to add custom button on UITabbar in iOS 7 GM .... Thanks In advance!!! 请解决我的问题,如何在iOS 7 GM中的UITabbar上添加自定义按钮。

From the Apple's Tabbar documentation: 从Apple的Tabbar文档中:

A tab bar is a control, usually appearing across the bottom of the screen in the context of a tab bar controller, for giving the user one-tap, modal access to a set of views in an app. 标签栏是一种控件,通常显示在屏幕底部的标签栏控制器的上下文中,用于为用户提供对应用程序中一组视图的一键式模式访问。 Each button in a tab bar is called a tab bar item and is an instance of the UITabBarItem class. 选项卡栏中的每个按钮都称为选项卡栏项目,并且是UITabBarItem类的实例。 If you instead want to give the user a bar of buttons that each perform an action, use a UIToolbar object. 相反,如果希望为用户提供一个分别执行某项操作的按钮栏,请使用UIToolbar对象。

The UITabBar class supports user customization of a tab bar by reordering, removing, and adding items to the bar. UITabBar类通过重新排序,删除和添加选项卡来支持用户定制选项卡栏。 You can use a tab bar delegate to augment this behavior. 您可以使用标签栏委托来增强此行为。

Use the UITabBarItem class to create items and the setItems:animated: method to add them to a tab bar. 使用UITabBarItem类创建项目,并使用setItems:animated:方法将其添加到选项卡栏。 All methods with an animated: argument allow you to optionally animate changes to the display. 所有带有animated:参数的方法都可以选择对显示的更改进行动画处理。 Use the selectedItem property to access the current item. 使用selectedItem属性访问当前项目。

You are using UIBarbuttonItems in a tab bar. 您正在选项卡栏中使用UIBarbuttonItems。 If you want to use a tab bar use UITabBarItems. 如果要使用选项卡栏,请使用UITabBarItems。

However, seeing that you are adding actions to the buttons, you should be using a toolbar, not a tab bar. 但是,看到要在按钮上添加操作,应该使用工具栏,而不是标签栏。 It should work peachy if you make these changes! 如果您进行了这些更改,它应该可以正常工作!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM