我有一个viewController类别,并且在类别中有一个UILabel。 我想从anther viewController设置标签标题。
当我试图崩溃时。
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[BaseViewController setTitleLabel:]: unrecognized selector sent to instance 0x7fcfe857a580'
我怎样才能做到这一点。
编辑:
TitleLabel
是Category中的标签,这是UIViewController类别中的代码
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
btn.frame = CGRectMake(0, 0, 50, 50);
[btn setImage:[UIImage imageNamed:@"Menu"] forState:UIControlStateNormal];
[btn addTarget:self action:@selector(MenuPressed:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *leftBtn = [[UIBarButtonItem alloc]initWithCustomView:btn];
UIButton *btn1 = [UIButton buttonWithType:UIButtonTypeCustom];
btn1.frame = CGRectMake(0, 0, 70, 44);
[btn1 setTitle:@"Clickme!" forState:UIControlStateNormal];
btn1.backgroundColor = [UIColor blueColor];
UILabel *titleLabel = [UILabel new];
titleLabel.frame = CGRectMake(0, 0, 100, 44);
titleLabel.backgroundColor =[UIColor cyanColor];
UIBarButtonItem *barBtn2 = [[UIBarButtonItem alloc]initWithCustomView:btn1];
UIBarButtonItem *barTitle = [[UIBarButtonItem alloc]initWithCustomView:titleLabel];
UIBarButtonItem *flexibleItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
NSArray *barBtnArray = @[leftBtn,flexibleItem,barTitle,barBtn2];
self.navigationItem.leftBarButtonItems = barBtnArray;
答案 0 :(得分:0)
您不能这样做,因为label属性是在.m
文件中声明的。它不会在外面访问,如果你试图访问,那么它会崩溃(这就像私人财产)。你有两个选择来解决这个问题。
选项1
在.h
文件本身
选项2
编写一个公共方法,该方法以NSString
作为参数,并将其设置为标签的值。
答案 1 :(得分:0)
UIViewController没有titleLabel的属性。检查您的类别类别。