0

ただのシンプルなアプリ

UIViewControllerA と B という名前の2 つの を作成します。
appDelegate のコード

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    A * a = [[A alloc] initWithNibName:@"A" bundle:nil];
    UINavigationController * nav = [[UINavigationController alloc] initWithRootViewController:a];

    [self.window setRootViewController:nav];
    [self.window makeKeyAndVisible];
    return YES;
}

ViewController A のコード

- (void)goB {
    B * b = [[B alloc] initWithNibName:@"B" bundle:nil];
    [[self navigationController] pushViewController:b animated:YES];
}

- (void)viewDidLoad {
    [super viewDidLoad];

//    [[[self navigationController] navigationBar] setHidden:YES]; // i guess this line make a problem
    [[self navigationController] setNavigationBarHidden:YES];

    UISwipeGestureRecognizer * s = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(goB)];
    [s setDirection:UISwipeGestureRecognizerDirectionLeft];
    [[self view] addGestureRecognizer:s];
}

ViewController B にはコードはありませんが、B.xib に a を入れましたUITableView
それから、私が書くなら

[[[self navigationController] navigationBar] setHidden:YES].  

BのtableViewは機能しません。スクロールできません。
しかし、この行を削除すると機能します。
別の問題があります。UITableViewDataSource と Delegateを追加すると。
@interface D : NSObject <UITableViewDataSource, UITableViewDelegate>

@implementation D

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 4;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell * cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];

    [[cell textLabel] setText:@"123"];
    return cell;
}

別のエラーが発生しました。

libobjc.A.dylib`objc_msgSend:
0x37dd3fac:  teq.w  r0, #0
0x37dd3fb0:  beq    0x37dd3fee                ; objc_msgSend + 66
0x37dd3fb2:  push.w {r3, r4}
0x37dd3fb6:  ldr    r4, [r0]
0x37dd3fb8:  lsr.w  r9, r1, #2
0x37dd3fbc:  ldr    r3, [r4, #8]
0x37dd3fbe:  add.w  r3, r3, #8
0x37dd3fc2:  ldr    r12, [r3, #-8]
0x37dd3fc6:  and.w  r9, r9, r12
0x37dd3fca:  ldr.w  r4, [r3, r9, lsl #2]
0x37dd3fce:  teq.w  r4, #0
0x37dd3fd2:  add.w  r9, r9, #1
0x37dd3fd6:  beq    0x37dd3fea                ; objc_msgSend + 62
0x37dd3fd8:  ldr.w  r12, [r4]
0x37dd3fdc:  teq.w  r1, r12
0x37dd3fe0:  bne    0x37dd3fc2                ; objc_msgSend + 22
0x37dd3fe2:  ldr.w  r12, [r4, #8]
0x37dd3fe6:  pop    {r3, r4}
0x37dd3fe8:  bx     r12
0x37dd3fea:  pop    {r3, r4}
0x37dd3fec:  b      0x37dd3ff4                ; objc_msgSend_uncached
0x37dd3fee:  mov.w  r1, #0
0x37dd3ff2:  bx     lr
4

2 に答える 2

0

これを使って

 [self.navigationController setNavigationBarHidden:YES];

それ以外の

 [[[self navigationController] navigationBar] setHidden:YES].  
于 2012-10-22T11:17:15.153 に答える
0

使用することもできます

[[[self navigationController] topViewController] setNavigationBarHidden:YES]
于 2012-10-22T11:21:03.883 に答える