【问题标题】:IBAction Method not calling in viewDidLoad Method?IBAction 方法未在 viewDidLoad 方法中调用?
【发布时间】: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 方法之前填充必要的内容。

标签: ios objective-c uitableview uibutton


【解决方案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];
    

    【讨论】:

    • 您不必“假装触摸”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多