1

こんにちは、私は iphone 開発に非常に慣れていません。私は Java バックグラウンド開発者です。私のアプローチは Java のようなものです。

ここで私の要件は、すべてのビュー コントローラーから 1 つのグローバル関数を呼び出すことです。そこから、self.navigationController をパラメーターとして渡します。その機能で、いくつかのボタンを追加します。ユーザーがそのボタンをクリックすると、もう1つの関数が呼び出され、同じオブジェクトがパラメーターとして保持されます。

指導をお願いします。次のように試しましたが、コンパイル時にエラーが表示されます

ユーティリティ.m

     +(void)setBacKButton:(UINavigationController *)navigationController
    {

        for(UIButton *btn in navigationController.navigationBar.subviews){
            if([btn isKindOfClass:[UIButton class]]){
                [btn removeFromSuperview];
            }
        }

        UIButton *btn2=[UIButton buttonWithType:UIButtonTypeCustom];
        btn2.frame=CGRectMake(708, 0, 50, 54);
        [btn2 setImage:[UIImage imageNamed:@"btn_back.png"] forState:0];
        [btn2 setImage:[UIImage imageNamed:@"btn_back_h.png"] forState:UIControlStateSelected];
        // here i need to call bellow function when click on this button
//[btn2 addTarget:self action:@selector() forControlEvents:UIControlEventTouchUpInside];
        [navigationController.navigationBar addSubview:btn2];  
    }
    +(void)gotoBack:(UINavigationController *)navigationController
    {
        [navigationController popViewControllerAnimated:YES];
    }

そして、ビューコントローラーからその関数を次のように呼び出します

[Utilities setBacKButton:self.navigationController];

これを達成する方法を教えてください

4

4 に答える 4

2

アプリデリゲートに関数を追加し、すべてのビューコントローラーでその関数を呼び出します。appdelegateのオブジェクトを使用します。次に、その関数にID送信者を含むボタンを1つ追加し、メソッドで必要な操作を行います。

于 2012-06-22T07:58:28.277 に答える
1

UINavigationBar のカテゴリを作成します。

UINavigationBar+customBackButton.h

#import <UIKit/UIKit.h>

@interface UINavigationBar (customBackButton)
- (void)setCustomBackButton;
@end

UINavigationBar+customBackButton.m

#import "UINavigationBar+customBackButton.h"

@implementation UINavigationBar (customBackButton)

- (void)setCustomBackButton
{
    for(UIButton *btn in self.subviews)
    {
        if([btn isKindOfClass:[UIButton class]])
        {
            [btn removeFromSuperview];
        }
    }

    UIButton *btn2=[UIButton buttonWithType:UIButtonTypeCustom];
    btn2.frame=CGRectMake(708, 0, 50, 54);
    [btn2 setImage:[UIImage imageNamed:@"btn_back.png"] forState:0];
    [btn2 setImage:[UIImage imageNamed:@"btn_back_h.png"] forState:UIControlStateSelected];
    // here i need to call bellow function when click on this button
    //[btn2 addTarget:self action:@selector() forControlEvents:UIControlEventTouchUpInside];
    [self addSubview:btn2];
}

@end

次に、任意のView Controllerで、このようにインポートできます

#import "UINavigationBar+customBackButton.h"

[self.navigationController.navigationBar setCustomBackButton];
于 2012-06-22T08:29:30.467 に答える
1

アプリのデリゲートでナビゲーションコントローラーを作成するだけです...そしてこれを使用してビューコントローラーをプッシュします..次のコードに従ってください...

   //YourAppdelegate.h
   UINavigationController *navController; 
   @property(nonatomic,retain)UINavigationController *navController; 

  // your appdelegate.m

  navController = [UINavigationController alloc]initWithRootViewController:self.viewController];
  self.window.rootViewController = navController ;

ここで(appdelegate.mで)グローバル関数を次のようにします........

 - (void)setBacKButton:(UINavigationController *)navigationController{
     // put your code here
  }

このように必要なView Controllerから呼び出します...

   // yourViewController.m

「yourAppdelegate.h」をインポートします

その関数を呼び出す必要がある場合は、次の 2 行を記述します。

  YourAppdelegate    *appdelegate = (YourAppdelegate*)[[UIApplication sharedApplication]delegate];

  [appdelegate setBacKButton:self.navigationController];

これはあなたを助けるかもしれません

于 2012-06-22T09:59:36.123 に答える