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 不会触发
UIImage 未在按钮 IBAction 上的 setImage 上更新