Iphone 如何更改UINavigationController的UINavigationBar?
我有一个通过编程创建的UINavigationController:Iphone 如何更改UINavigationController的UINavigationBar?,iphone,objective-c,cocoa-touch,uinavigationcontroller,uinavigationbar,Iphone,Objective C,Cocoa Touch,Uinavigationcontroller,Uinavigationbar,我有一个通过编程创建的UINavigationController: MessageTableViewController* homeStream = [[MessageTableViewController alloc] initWithNibName:@"MessageTableViewController" bundle:nil]; homeStream.fetchHomeStream = YES; homeStream.title = @"Hom
MessageTableViewController* homeStream = [[MessageTableViewController alloc] initWithNibName:@"MessageTableViewController" bundle:nil];
homeStream.fetchHomeStream = YES;
homeStream.title = @"Home";
UINavigationController* navBarController = [[UINavigationController alloc] initWithRootViewController:homeStream];
navBarController.tabBarItem.image = [UIImage imageNamed:@"hometab.png"];
[homeStream release];
我有一个自定义的UINavigationBar,名为STNavigationBar。如何使用STNavigationBar而不是作为UINavigationController一部分的默认UINavigationBar?编辑对于未来的读者,下面的答案在iOS 5上不再适用 您不能只将其设置为现有实例,因为UINavigationController具有navigationBar的只读属性。我不认为子类化UINavigationController是您想要的
我认为最好的方法是创建一个扩展UINavigationBar的类别,如前所述。编辑对于未来的读者,下面的答案在iOS 5上不再适用 您不能只将其设置为现有实例,因为UINavigationController具有navigationBar的只读属性。我不认为子类化UINavigationController是您想要的
我认为最好的方法是创建一个扩展UINavigationBar的类别,如前所述。我最终使用了iOS5 UIKit外观代理:
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"header"] forBarMetrics:UIBarMetricsDefault];
无需子类化或类别。我最终使用了iOS5 UIKit外观代理:
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"header"] forBarMetrics:UIBarMetricsDefault];
不需要子类化,也不需要类别。我最初将其作为一个类别使用,效果很好,但iOS5破坏了这一功能,现在使用类别超越实际方法是一种不好的做法。所以我决定对它进行子类化。当我在IB中设置导航栏时,它可以工作,但我还需要通过编程进行设置…我没有意识到这一点。那么这个答案中的第三个选项呢?刚刚发布了一个答案,我使用了ios5uikit外观proxyI最初将其作为一个类别使用,效果很好,但是iOS5破坏了这个功能,现在使用类别超越实际方法是一种不好的做法。所以我决定对它进行子类化。当我在IB中设置导航栏时,它可以工作,但我还需要通过编程进行设置…我没有意识到这一点。那么这个答案中的第三个选项呢?刚刚发布了一个答案,我使用了ios5uikit外观代理