Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何更改UINavigationController的UINavigationBar?_Iphone_Objective C_Cocoa Touch_Uinavigationcontroller_Uinavigationbar - Fatal编程技术网

Iphone 如何更改UINavigationController的UINavigationBar?

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

我有一个通过编程创建的UINavigationController:

 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外观代理