工具栏& xcode中的后退按钮问题

时间:2012-12-04 07:21:39

标签: iphone ios xcode ipad

我正在创建一个工具栏应用程序,在该应用程序中所有工具栏图标和操作都已成功完成。但是当我使用该图标进行下一个视图调用时,我正在调用后退按钮然后它将崩溃。我在哪里添加我的代码

/////在视图中加载

    objectLabel = [[UILabel alloc]init];
   objectLabel.frame = CGRectMake(10, 10, 300, 40);
   objectLabel.text = @"Press Button";
   [self.view addSubview:objectLabel];
   NSLog(@"label");
   objectToolbar=[UIToolbar new];
    objectToolbar.barStyle = UIBarStyleBlackTranslucent;
   [objectToolbar sizeToFit];
   objectToolbar.frame = CGRectMake(0, 410, 320, 50);
   NSLog(@"toolbar");

   UIBarButtonItem *systemItem1 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd
                                                                             target:self
                                                                             action:@selector(pressButton1:)];

   UIBarButtonItem *systemItem2 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction
                                                                             target:self
                                                                             action:@selector(pressButton2:)];

   UIBarButtonItem *systemItem3 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera
                                                                             target:self
                                                                             action:@selector(pressButton3:)];
   UIBarButtonItem *flexItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
                                                                          target:nil
                                                                          action:nil];
   NSArray *items = [NSArray arrayWithObjects: systemItem1, flexItem, systemItem2, flexItem, systemItem3, nil];
   [objectToolbar setItems:items animated:NO];
   [self.view addSubview:objectToolbar];

///之后

 -(void) pressButton1:(id)sender{
   // objectLabel.text = @"Add";
       FirstViewController *objectFirstViewController=[[FirstViewController alloc]initWithNibName:@"FirstViewController" bundle:nil];
       [self.view addSubview:objectFirstViewController.view];

   }

 -(void) pressButton2:(id)sender{
objectLabel.text = @"Take Action";
 }  

-(void) pressButton3:(id)sender{
objectLabel.text = @"Camera";
}

///在FirstViewController.m中

   -(IBAction)back:(id)sender
    {
      ViewController *objectViewController=[[ViewController  alloc]initWithNibName:@"ViewController" bundle:nil];
      [self.view addSubview:objectViewController.view];
   }

当我点击后退按钮时它会崩溃..请给我解决方案

4 个答案:

答案 0 :(得分:2)

为了返回,您不应该创建上一个类的新对象并再次添加它。相反,您需要从superview中删除当前子视图以返回。

-(IBAction)back:(id)sender
{

  [self.view removeFromSuperview];
}

最好为此使用导航或模型转换,而不是只执行addSubView

答案 1 :(得分:2)

只需从当前视图的superview中删除ex ..

   [self.view removeFromSuperview]; 

 // or  if you want to call the method from your MainViewController use this line [objectFirstViewController removeFromSuperview];

答案 2 :(得分:0)

由于您正在执行[self.view addSubview:Viewcontroller.view];,因此逻辑上遵循您应该在添加的子视图中执行[self.view removeFromSuperview];。尽管如此,建议您使用导航控制器并执行推/弹操作以显示/删除视图。如果您的问题是导航栏,则可以通过self.navigationController.navigationBarHidden = YES;隐藏它,并使用工具栏作为替代。

答案 3 :(得分:0)

而不是这个;

[self.view addSubview:objectFirstViewController.view];

使用

[self.navigationController pushViewController:objectFirstViewController animated:YES];

和Viewdidload的FirstviewController设置,

self.navigationController.navigationBar.hidden = YES;

并使用此

-(IBAction)back:(id)sender
{

        [self.navigationController popViewControllerAnimated:YES];
}

多数民众赞成。