Ios navigationItem始终变为零

Ios navigationItem始终变为零,ios,objective-c,frame,null,uinavigationitem,Ios,Objective C,Frame,Null,Uinavigationitem,我有用于navigationItem的IBoutlet,我写为 @property (nonatomic,strong) IBOutlet UINavigationItem *navItemRoster; 然后,我编写设置标题视图 - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bun

我有用于navigationItem的IBoutlet,我写为

@property (nonatomic,strong) IBOutlet UINavigationItem *navItemRoster;
然后,我编写设置标题视图

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self)
    {
        // Custom initialization
        self.title = @"Select User";
        self.navItemRoster.titleView = [Helpers getCenterTitleViewWithTitle:@"Select User"];
    }
    return self;
}
但是我不能设置标题视图。所以,我检查并调试。我发现了这个。它总是零。我该怎么办?可能的错误是什么

编辑:我还连接了IB


如果您没有使用此方法打开此VC
-(id)initWithNibName:(NSString*)nibNameOrNil bundle:(NSBundle*)nibBundleOrNil
则必须在
-(void)viewDidLoad
方法中编写此代码以设置标题

-(void)viewDidLoad {
    [super viewDidLoad];
    self.title = @"Select User";
    self.navItemRoster.titleView = [Helpers getCenterTitleViewWithTitle:@"Select User"];
}

你确定你用IB连接了它?是的。我也连接了。嗯……真奇怪……为什么它在viewdidload中工作?你能解释一下吗?我在其他VC中也有其他导航项,我只是在initWithNibName中声明。他们没事。但是现在,为什么它只在viewdidload中工作?谢谢你的帮助。我遵循你的方法,现在一切都好了。@KhantThuLinn我想我已经在我的回答中写到,这取决于你如何打开你的VC,如果你使用
-(id)initWithNibName:(NSString*)nibNameOrNil bundle:(NSBundle*)nibBundleOrNil
方法打开它,那么你的代码将无法工作。但是
-(void)viewDidLoad
将始终在每次浏览VC加载时运行。是的。我这样叫。RosterVC*vc=[[RosterVC alloc]initWithNibName:@“RosterVC”束:nil];因此,它通过initWithNibName进行初始化。@KhantThuLinn-Hmm,不确定为什么不调用它,但最好在
-(void)viewDidLoad
方法中编写所有初始化代码。