以下是我在我的应用中遇到的错误,这在ios6中运行正常。
[__NSCFString frame]: unrecognized selector sent to instance 0xc075290
我没有弄到底有什么问题。但我想与UINavigationController
有关的事情。请指导以上。
提前谢谢。
更新:启用Zombies后我收到此错误。
[_UINavigationBarBackIndicatorView frame]: message sent to deallocated instance 0xc0fb860
-(void)viewWillAppear:(BOOL)animated
{
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"isAcceptTerms"]) {
[adBannerView setDelegate:self];
[adBannerView setHidden:NO];
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"isBannerShown"]) //-ive logic is applied
{
[self.adBannerView setHidden:YES];
[self.adBannerView setDelegate:nil];
}
}
else
{
[adBannerView setDelegate:nil];
[adBannerView setHidden:YES];
}
[self.navigationController.navigationBar setHidden:NO];
NSMutableDictionary *dictTemp =[[sqlmessenger shared]fetchOrders];
int count=[[sqlmessenger shared] isuserdetails];
if (count>0)
{
[self updateCoordinate];
}
NSArray *arrContorl = [self.navigationController.navigationBar subviews];
for(UIButton *btnTemp in arrContorl)
{
if([btnTemp isKindOfClass:[UIButton class]])
{
[btnTemp removeFromSuperview];
}
}
UIImageView *imgHeader= [[UIImageView alloc]initWithFrame:CGRectMake(0,0,320,44)];
[imgHeader setBackgroundColor:[UIColor clearColor]];
[imgHeader setImage:[UIImage imageNamed:@"setting.png"]];
[self.navigationController.navigationBar addSubview:imgHeader];
if(lblHeader)
{
lblHeader=nil ;
}
lblHeader = [[UILabel alloc]initWithFrame:CGRectMake(60,5,230,30)];
[lblHeader setBackgroundColor:[UIColor clearColor]];
[lblHeader setTextAlignment:UITextAlignmentLeft];
[lblHeader setTextColor:[UIColor whiteColor]];
[lblHeader setFont:[UIFont boldSystemFontOfSize:18.0]];
if([dictTemp count]==0 && contentView.hidden == FALSE)
{
[lblHeader setText:@"Terms of Service (EULA)"];
}
else
{
[lblHeader setFrame:CGRectMake(110,5,200,30)];
[lblHeader setFont:[UIFont boldSystemFontOfSize:20.0]];
[lblHeader setText:@"Settings"];
}
[self.navigationController.navigationBar addSubview:lblHeader];
}
答案 0 :(得分:2)
显然,您正在尝试访问frame
对象的NSString
属性,这是不允许的,因为此对象没有此属性。
尝试添加更多详细信息。 (添加导致崩溃的代码,通常崩溃堆栈没有用)。
<强>更新强>: 仍然不确定发生了什么,你需要做实际的调试,植入必要的断点记录你的变量,看看他们有什么价值等。 我可以给你一些你可以尝试的东西:
1.不确定为什么要将子视图添加到导航栏。您可以改为使用UIViewController
的navigationItem属性,然后使用UINavigationItem
的leftBarButtonItem,如:
对于左栏按钮项目:(确保先隐藏后退按钮)
self.navigationController.navigationItem.hidesBackButton = YES;
self.navigationItem.leftBarButtonItem = yourLeftBarButtonItem;
对于正确的人:
self.navigationItem.rightBarButtonItem = yourRightBarButtonItem;
2.每次viewController出现时,你都要分配视图和标签。那效率很低。记忆和时间。相反,您可以分配一次并更改alpha
频道。