iOS7中的问题,在iOS6中很好

时间:2013-11-14 10:06:26

标签: ios iphone ios6 ios7

以下是我在我的应用中遇到的错误,这在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];
 }

1 个答案:

答案 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频道。