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

时间:2016-04-29 08:42:58

标签: ios objective-c uitableview uibutton

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

最初我的屏幕是这样的,

enter image description here

这是IBAction代码,

-(IBAction)myContest:(id)sender
{
 value = 0;
 [tableViewContest reloadData];
 if(str.length > 0)
   {
     NSData* data = [str dataUsingEncoding:NSUTF8StringEncoding];
   }
}

问题是什么?任何帮助。

4 个答案:

答案 0 :(得分:0)

行动要求

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():
}

答案 1 :(得分:0)

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

-(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];

}

答案 2 :(得分:-1)

一种方法是只创建该按钮的IBOutlet

@property (weak, nonatomic) IBOutlet UIButton *btn

然后以编程方式点击该按钮的点击事件。

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

答案 3 :(得分:-1)

您必须以编程方式将触摸事件假冒到viewdidload中的UIButton

[buttonObj sendActionsForControlEvents: UIControlEventTouchUpInside];