【问题标题】:Dont shown UINavigationController on modalView不要在模态视图上显示 UINavigationController
【发布时间】:2012-02-09 09:59:18
【问题描述】:

我在问

[self presentModalViewController:searchRegionController animated:YES]; 

之后我尝试通过

添加 NavigationController
   self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Add" style:UIBarButtonItemStyleBordered target:self action:@selector(next:)] autorelease];
    self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action:@selector(cancelAdd:)] autorelease]
    self.navigationItem.titleView =  someView;

【问题讨论】:

  • 请提供更多关于您到底想要什么的信息……您想要导航控制器还是导航栏?以及您尝试以哪种方法添加您的 navigationController ?
  • 导航栏。我只想要模态视图上的自定义导航栏。如果我通过“pushToView...”查看它的工作原理,但“presentModalView...”没有;

标签: objective-c uinavigationcontroller modalviewcontroller


【解决方案1】:

这样做 在 searchRegionController 类中

-(void)viewDidLoad
{
     UINavigationBar *naviBarObj = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
[self.view addSubview:naviBarObj];
UIBarButtonItem *rightBarButtonItem =[[[UIBarButtonItem alloc] initWithTitle:@"Add" style:UIBarButtonItemStyleBordered target:self action:@selector(next:)] autorelease];

UIBarButtonItem *leftBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action:@selector(cancelAdd:)] autorelease];

UINavigationItem *navigItem = [[UINavigationItem alloc] initWithTitle:@"Navigation Title"];
navigItem.rightBarButtonItem = rightBarButtonItem;
navigItem.leftBarButtonItem = leftBarButtonItem;
naviBarObj.items = [NSArray arrayWithObjects: navigItem,nil];
}

希望这会有所帮助。

【讨论】:

  • 那是因为当您使用 PushToView 时,您实际上是在将视图推送到 NavigationController 上,因此默认情况下 NavigationController 是可见的,但是当使用 presentModalView 时,视图不会推送到 navigationController 堆栈上,它显示为独立视图,因此不显示上一个视图中的 NavigationController。 ..你明白了。!!
  • 哦,太好了。没有足够的声誉给你+,但我真的很感谢你:)
【解决方案2】:

试试这个:

-(void)someAction
{
ViewController *object = [ViewController]alloc]initWithNibName:@"NibName" bundle:[NSBundle mainBundle];

UINavigationController *navController = [UINavigationCOntroller]alloc]initWithRootViewController:object];

[self presentModalViewController:navController animated:YES];

[object release];
[navController release];
}

在 ViewController 的 viewDidLoad 中做:

 self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Add" style:UIBarButtonItemStyleBordered target:self action:@selector(next:)] autorelease];
    self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action:@selector(cancelAdd:)] autorelease]
    self.navigationItem.titleView =  someView;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 2011-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多