0

これが私のコードです。

@interface MasterViewController : UIViewController{

}
-(void) initCallService;
@end

@implementation MasterViewController
-(void) initCallService{

}
@end

上記のサブクラスである他のクラス

@interface DetailViewController : MasterViewController{
    IBOutlet UIButton *btn;
}
@end


@implementation DetailViewController
-(void) btntitle_changed{
    [btn setTitle:[self.arr objectAtIndex:recordIndex] forState:UIControlStateNormal];
}
@end

クラスbtntitle_changedのメソッドでタイトルが変わるたびに、のメソッドに送信する必要があります。クラス階層でこれをどのように達成できるかわかりません。誰かがこれについて私を導くことができますか?有効な回答をいただければ幸いです。DetailViewControllerMasterViewControllerinitCallService

4

3 に答える 3

0

MasterViewControllerにプロパティが必要ですNSString *buttonTitle

-(void) btntitle_changed{
    [btn setTitle:[self.arr objectAtIndex:recordIndex] forState:UIControlStateNormal];
    [super setButtonTitle:btn.title];
}
于 2013-03-21T09:47:05.527 に答える
0

プロトコルを設定することで可能です

DetailViewController.hで

         @protocol TitleChange <NSObject>
          -(void)initCallService:(NSString *)title;
         @end

プロパティを次のように設定します

      @property(nonatomic,assign) id <TitleChange> delegate;

      In DetailViewController.m

     -(void) btntitle_changed
       {
      [btn setTitle:[self.arr objectAtIndex:recordIndex] forState:UIControlStateNormal];
      [self.delegate initCallservice: btn.title]
       }

MasterViewContoller.hで、TitleChangeデリゲートを次のように追加します。

    @interface MasterViewController : UIViewController<TitleChange>{

    }

DetailViewControllerの開始中にMasterViewContoller.mを使用します

    DetailViewController *vc =[[DetailViewController alloc] :@"DetailViewController"   bundle:nil];
    vc.delegate=self
    [self presentViewController:vc animated:YES completion:nil];

これは、データの受け渡しに広く使用されているプロトコルとデリゲートの方法であり、データの基本を理解するだけです。

于 2013-03-21T09:48:17.823 に答える
0

に変更するだけ-(void)initCallServiceです-(void)initCallServiceWithButtonTitle:(NSSTring*)title。次にbtntitle_changed、次のように機能を変更します。

-(void) btntitle_changed{
    [btn setTitle:[self.arr objectAtIndex:recordIndex] forState:UIControlStateNormal];
    [super initCallServiceWithButtonTitle:btn.title];
}

-(void)initCallServiceWithButtonTitle:(NSString*)title{
 //do whatever you want with 'title'
}
于 2013-03-21T09:48:57.577 に答える