0

只是一个简单的应用程序

我创建了两个UIViewController,分别命名为 A 和 B。
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 中没有代码,但我将 aUITableView放入 B.xib。
然后,如果我写

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

B 中的 tableView 不能工作,我不能滚动它。
但是如果我删除这一行,它就可以工作。
还有一个问题。当我添加UITableView数据源和委托时。
@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

you can also try to use

[[[self navigationController] topViewController] setNavigationBarHidden:YES]
于 2012-10-22T11:21:03.883 回答
0

用这个

 [self.navigationController setNavigationBarHidden:YES];

代替

 [[[self navigationController] navigationBar] setHidden:YES].  
于 2012-10-22T11:17:15.153 回答