IBAction 方法未在 viewDidLoad 方法中调用?

Posted

技术标签:

【中文标题】IBAction 方法未在 viewDidLoad 方法中调用?【英文标题】:IBAction Method not calling in viewDidLoad Method? 【发布时间】:2016-04-29 08:42:57 【问题描述】:

在我的应用程序中,我想在viewDidLoad 方法中调用IBAction 方法。我像这样打电话给[self myContest:nil];。当我点击IBAction 方法时,它工作正常,但最初启动屏幕时它不工作。

最初我的屏幕是这样的,

这是 IBAction 代码,

-(IBAction)myContest:(id)sender

 value = 0;
 [tableViewContest reloadData];
 if(str.length > 0)
   
     NSData* data = [str dataUsingEncoding:NSUTF8StringEncoding];
   

问题是什么?任何帮助。

【问题讨论】:

准确定义“不调用”。如果您在myContest: 上放置NSLog() 或断点,您看到调用了吗?你怎么知道它在工作? @Larme 它正在调用但没有显示任何东西。 它应该显示什么? @Larme 在最初加载视图控制器时看到我上面的屏幕。我想要这样 从 viewdidload 触发按钮操作时,您的 tableview 没有显示正确的内容?如果是这样,请确保在调用 table reloaddata 方法之前填充必要的内容。 【参考方案1】:

IBAction 被调用以执行操作。为了满足您的要求,您可以使用您要执行的代码创建一个函数,然后从您的 viewDidLoad() 方法以及按钮的 IBAction() 方法调用此函数。

void doTask() 
     value = 0;
     [tableViewContest reloadData];
     if(str.length > 0)
     
         NSData* data = [str dataUsingEncoding:NSUTF8StringEncoding];
     

现在从任何你想要的地方调用这个函数:

-(IBAction)myContest:(id)sender 
    doTask():

- (void)viewDidLoad:(BOOL)animated 
    doTask():

【讨论】:

我会尽力通知你的。 有什么问题?您是否尝试过调试问题? 这应该如何解决作者问题?您可以从代码中调用 IBAction。【参考方案2】:

首先如果你想在 ViewDidLoad 中调用它,你必须改变它,因为你不能直接调用 IbAction 方法来 viewdidload

-(IBAction)myContest:(id)sender

-(void) myContest

那么你就可以在viewDidLoad方法中调用它

- (void)viewDidLoad

    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    [self myContest];


【讨论】:

这应该如何解决作者问题?您可以从代码中调用IBAction【参考方案3】:

一种方法是只为那个按钮创建一个IBOutlet

@property (weak, nonatomic) IBOutlet UIButton *btn

然后以编程方式触发该按钮的单击事件。

- (void)viewDidLoad 
    [super viewDidLoad];
    [btn sendActionsForControlEvents:UIControlEventTouchUpInside];

【讨论】:

【参考方案4】:

您必须在 viewdidload 中以编程方式将触摸事件伪造为 UIButton

[buttonObj sendActionsForControlEvents: UIControlEventTouchUpInside];

【讨论】:

您不必“假装触摸”。

以上是关于IBAction 方法未在 viewDidLoad 方法中调用?的主要内容,如果未能解决你的问题,请参考以下文章

当我添加 viewDidLoad 时 IBAction 不会触发

如何在 viewDidLoad 中调用 IBAction?

UIImage 未在按钮 IBAction 上的 setImage 上更新

nib 文件未在 viewDidLoad 中注册

Swift iOS SearchController 未在 ViewDidLoad 中调用

信息未在 viewDidLoad 上发送到 Apple Watch