탐색 막대의 제목으로 '정보'를 제공하기 위해 UIButton으로 탐색 기반 앱을 설정하려고합니다. 제목으로 버튼을 쉽게 설정할 수는 있지만 영구적으로 (그리고 새로운 viewController가 호출 될 때마다 내비게이션 막대가 슬라이드되지 않도록) 어디에서해야 하는지를 알 수 없습니다. 여기에 내 현재 코드입니다 : - 나는 그냥 시작 설정하고 난 실제 방법에 대한 싱글 톤의를 사용하여 아무런 문제가 없습니다 (영원 할 -앱 전체에서 UINavigationBar에 UIButton 유지?
대한 명확한AppDelegate.h
@class ViewController;
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) ViewController *viewController;
@end
AppDelegate.m
#import "AppDelegate.h"
#import "ViewController.h"
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_iPhone" bundle:nil];
} else {
self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_iPad" bundle:nil];
}
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:self.viewController];
self.window.rootViewController = navController;
[self.window makeKeyAndVisible];
return YES;
}
ViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(100, 4, 120, 36);
[button setImage:[UIImage imageNamed:@"logo_1.png"] forState:UIControlStateNormal];
[button addTarget:self action:@selector(about) forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.titleView = button;
// Do any additional setup after loading the view, typically from a nib.
}
는 '있는 viewDidLoad'의 코드가 잘 작동 나는 그냥 그것을 다시로드하고 싶지 않아요).
나는 사이트를 파고 들었고 몇 시간 동안 꾸물 거리며이 작업을 할 수없는 것처럼 보였다. 도와 주셔서 미리 감사드립니다.
당신은이 수행되는 방식에 자세히 설명해 수 있을까? naviBar가 슬라이드되지 않는 것은 가능하지 않을 수도 있지만, 그렇게하는 여러 응용 프로그램을 다시 말할 수 있습니다. 나는 그들이 ViewController를 사용하고 하나 또는 최소한의 클래스에서 각각의 뷰를 호스팅하지 않는다고 추정한다. – Ryan
@ Ryan 데모를 위해 GitHub에서 샘플 앱을 만들었습니다. – GayleDDS
감사합니다. 게일 - 정말 고맙습니다. 나는이 일을하는 데 아무런 문제가 없었고 실제로 많은 앱을 이미 앱에서 사용하고 있습니다. 내가 기념비적 인 것을 놓치지 않는 한, 각 클래스의 메서드를 호출하여 원하는 탐색 항목을 가져옵니다. 하지만 영구적으로/정적으로 내비게이션 막대를 위로 올려 놓을 수는 없습니까? 귀하의 코드에서 뭔가 빠졌습니까? titleItem과 rightItem 사이에 차이점이 있는데, rightItem이 머무를 수있는 동안 제목이 사라지는 이유는 무엇입니까? 다시 한번 감사드립니다. – Ryan