如何在不导航的情况下禁用另一个类中的uibutton

时间:2013-05-15 07:29:45

标签: iphone ios ipad uibutton

我的问题不同,我有一个大视图(classA)和一个小视图(classB),除了这个小视图有四个属于A类的按钮,我想禁用这些按钮。 这是我的代码。

在classB.m中

-(void)HideButtons{
      mainView = [[MainViewController alloc]initWithNibName:@"MainViewController"    bundle:NULL];
    [mainView HidesideBarButtons];
 }
B类

-(void)HidesideBarButtons{

    self.peBtn.enabled = NO; 

    ByViewBtn.enabled = NO;
    favouriteBtn.enabled = NO;
    settingBtn.enabled = NO;
    ItemButton.enabled = NO;
    addVehBtn.enabled = NO;
    uploadAllBtn.enabled = NO;
    deletevideosBtn.enabled = NO;
    }

这些按钮没有被禁用。我没有导航到那个视图(cassA)我正在同一个班级;

2 个答案:

答案 0 :(得分:0)

使用该对象使类10的对象访问该按钮

-(void)HidesideBarButtons{  
ClassA *obj =[[ClassA alloc]init];//Initialize it by your way
UIButton *myBtn=[obj getButton1];
[myBtn setEnabled:FALSE];
}

答案 1 :(得分:0)

如果我理解您的问题,您需要使用委托

在ClassB.h中


@protocol ClassBDelegate <NSObject>

-(void) hideSideBarButtons;

@interface ClassB: UIViewController {

__unsafe_unretained id<ClassBDelegate> delegate_;

}

@property (nonatomic, assign) id delegate;

-(void)hideButtons;

@end


----------

In ClassB.m


----------


@implementation ClassB

@synthesyze delegate = delegate_;

-(void)hideButtons {

[self.delegate hideSideBarButtons];

}


----------

In class MainViewController you need to sign up for ClassBDelegate event. Use this code in MainViewController.h


----------

@interface MainViewController : UIViewController <ClassBDelegate>
In ClassB.h

@protocol ClassBDelegate

-(void) hideSideBarButtons;

@interface ClassB: UIViewController {

__unsafe_unretained id delegate_;

}

@property (nonatomic, assign) id delegate;

-(void)hideButtons;

@end

In ClassB.m

@implementation ClassB

@synthesyze delegate = delegate_;

-(void)hideButtons {

[self.delegate hideSideBarButtons];

}

在MainViewController类中,您需要注册ClassBDelegate事件。在MainViewController.h中使用此代码

@interface MainViewController : UIViewController

当你在ClassB中初始化MainViewController.m时,你需要写:

[classB setDelegate:self];

需要在(void) hideSideBarButtons文件中编写ClassBDelegate方法 - MainViewController.m ,并禁用此方法中的所有按钮。例如(在MainViewController.m


-(void) hideSideBarButtons {

self.peBtn.enabled = NO;

}

希望它有帮助))