1

以下是我在我的应用程序中遇到的错误,它在 ios6 中运行良好。

[__NSCFString frame]: unrecognized selector sent to instance 0xc075290

我不明白其中有什么问题。但我猜一些与UINavigationController. 请指导以上。提前致谢。

更新:启用僵尸后,我收到此错误。

[_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];
 }
4

1 回答 1

2

显然,您正在尝试访问frame一个NSString对象的属性,这是不允许的,因为该对象没有此属性。

尝试添加更多细节。(添加导致崩溃的代码,通常崩溃堆栈没有那么有用)。

更新:仍然不确定发生了什么,您需要进行实际调试,设置必要的断点记录您的变量,查看它们的值等。我可以给您一些您可以尝试的东西:

1.不确定为什么要向导航栏添加子视图。您可以改为使用 的 navigationItem 属性UIViewController,然后使用 的 leftBarButtonItem UINavigationItem,例如:

对于左栏按钮项目:(确保先隐藏后退按钮)

self.navigationController.navigationItem.hidesBackButton = YES;
self.navigationItem.leftBarButtonItem = yourLeftBarButtonItem;

对于正确的:

self.navigationItem.rightBarButtonItem = yourRightBarButtonItem;

2. 每次 viewController 出现时,您都在分配视图和标签。那是低效的。记忆和时间方面。相反,您可以分配一次并更改alpha频道。

于 2013-11-14T10:09:32.903 回答