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方法中的标题更改时,我都需要DetailViewController将其发送到MasterViewController'sinitCallService方法。我不知道如何通过类层次结构实现这一点。任何人都可以指导我吗?有效的答案将不胜感激。

4

3 回答 3

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 回答
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 回答