2016-04-29 61 views
-1

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

最初我的屏幕上这个样子,

enter image description here

这里是IBAction为准则,

是什么问题?任何帮助。

+0

定义“没有要求”完全相同。如果你在'myContest:'上放了一个'NSLog()'或一个断点,你会看到这个调用吗?你怎么知道它在工作? – Larme

+0

@Larme它打电话,但没有显示任何东西。 –

+0

它应该显示什么? – Larme

回答

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

我会尽力告知你。 –

+0

对不起,没有与此工作 –

+0

有什么问题?你尝试调试这个问题吗? –

0

首先,如果你想它调用viewDidLoad中,你必须改变它,因为你不能调用一个IbAction方法直接查看数据加载

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

这应该如何解决作者问题?你可以从代码中调用一个'IBAction'。 – Larme

-1

的一种方法是,仅仅创建按钮

@property (weak, nonatomic) IBOutlet UIButton *btn

IBOutlet

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

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

你必须在你的viewDidLoad编程假的触摸事件,以一个UIButton

[buttonObj sendActionsForControlEvents: UIControlEventTouchUpInside]; 
+0

你不必“假摸”。 – Larme