0

私はツールバーアプリケーションを作成しています。そのアプリケーションでは、すべてのツールバーアイコンとアクションが正常に完了しました.しかし、次のビューの呼び出しにアイコンを使用し、そのビューから戻るボタンを呼び出すと、クラッシュします..

/////イン ビューで読み込みました

    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

4 に答える 4

2

戻るために、前のクラスの新しいオブジェクトを作成して再度追加するべきではありません。代わりに、スーパービューから現在のサブビューを削除して戻る必要があります。

-(IBAction)back:(id)sender
{

  [self.view removeFromSuperview];
}

これには、単にaddSubView.

于 2012-12-04T07:25:21.803 に答える
2

たとえば、現在のビューのスーパービューから削除するだけです..

   [self.view removeFromSuperview]; 

 // or  if you want to call the method from your MainViewController use this line [objectFirstViewController removeFromSuperview];
于 2012-12-04T07:27:39.337 に答える
0

あなたがやっているので、追加されたサブビューで[self.view addSubview:Viewcontroller.view];行うべきことは論理的に続きます。[self.view removeFromSuperview];それにもかかわらず、ナビゲーション コントローラーを使用し、プッシュ/ポップ操作を行ってビューを表示/削除することをお勧めします。問題がナビゲーション バーである場合は、それを非表示にしてself.navigationController.navigationBarHidden = YES;、代わりにツールバーを使用できます。

于 2012-12-04T07:37:16.403 に答える
0

これの代わりに;

[self.view addSubview:objectFirstViewController.view];

使用する

[self.navigationController pushViewController:objectFirstViewController アニメーション:YES];

そして、FirstviewController セットの Viewdidload で、

self.navigationController.navigationBar.hidden=YES;

そしてこれを使う

-(IBAction)back:(id)sender
{

        [self.navigationController popViewControllerAnimated:YES];
}

それでおしまい。

于 2012-12-04T08:36:14.503 に答える