如何在另一个类中禁用 uibutton 而无需导航到该类

Posted

技术标签:

【中文标题】如何在另一个类中禁用 uibutton 而无需导航到该类【英文标题】:how to Disable a uibutton in another class without navigating to that 【发布时间】:2013-05-15 07:29:45 【问题描述】:

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

在 B.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)我住在同一个班级;

【问题讨论】:

你想隐藏或禁用..? 在 self.peBtn.enabled = NO 行放断点;看看这个方法是调用还是不调用? 那个方法正在调用 【参考方案1】:

创建一个 classA 的对象,然后使用该对象访问按钮

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

【讨论】:

【参考方案2】:

如果我正确理解您的问题,您需要使用 delegate

在 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

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

[classB setDelegate:self];

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


-(void) hideSideBarButtons 

self.peBtn.enabled = NO;


希望对你有帮助))

【讨论】:

以上是关于如何在另一个类中禁用 uibutton 而无需导航到该类的主要内容,如果未能解决你的问题,请参考以下文章

如果单击禁用的 UIButton 会发生啥

在 Excel 中,如何调用存储在另一个工作簿中的用户定义函数而无需打开另一个工作簿?

如何禁用 tableview 特定行但特定行包含 uibutton。按钮必须访问

禁用 UIButton 而没有淡入淡出效果

如何禁用标准 UIButton 触摸事件

使带有 imageView 的 UIButton 看起来被禁用而不将 isEnabled 设置为 false