按下按钮时如何更改控制器,iOS?

Posted

技术标签:

【中文标题】按下按钮时如何更改控制器,iOS?【英文标题】:How to change controller when pressing a button , iOS? 【发布时间】:2013-03-10 18:50:51 【问题描述】:

我在我的 .xib 文件中添加了一个导航栏和一个栏按钮项。

我为我的按钮创建了一个动作,我连接了它,动作看起来像这样:

- (IBAction)AddAlert:(id)sender 

    self.addReminderViewController =[[AddReminderViewController alloc]initWithNibName:@"AddReminderViewController" bundle:nil];
    [self.navigationController pushViewController:addReminderViewController animated:YES];

AddReminderViewController 是我要导航到的控制器。

我的 ViewController.h 看起来像这样:

#import <UIKit/UIKit.h>

@class AddReminderViewController;

@interface ViewController : UIViewController <UITableViewDelegate , UITableViewDataSource>

@property (strong, nonatomic) AddReminderViewController *addReminderViewController;

@property (strong,nonatomic) NSArray *listData;

- (IBAction)AddAlert:(id)sender;

@end

我在哪里声明 @class AddreminderViewController 以便我可以在那里导航,然后我在 .m 文件上合成属性。

但是,当我按下按钮时,什么也没有发生。它不会崩溃!它只是不引导我到任何地方。我应该对 AppDelegate 进行任何更改吗?我在这里错过了什么?

【问题讨论】:

您确定您的 IBAction 已正确连接到按钮的 touch up inside 事件吗? 嗯,它是一个条形按钮项目,我在哪里可以看到你说的选项?在连接检查器中,它只向我显示与操作相关的内容。 是的,在连接检查器中您可以看到,尝试在您的 AddAlert 操作中将参数类型 id 更改为 UIBarButtonItem * 对于我正在使用的条形按钮项目,我只能看到它与 AddAlert Action 的连接。 从放置在导航栏上的项目中获取一个栏按钮项目。连接到我在上面显示的 AddAlert 操作。我认为我应该在我的委托文件中添加一些内容,以使这种导航能够正常工作,但我不确定 【参考方案1】:

当您使用self.addReminderViewController 初始化控制器但后来您在不使用self 的情况下进行广告时,使用self 确保对象保留计数设置正确。

在你的代码中

[self.navigationController pushViewController:addReminderViewController animated:YES];

尝试更改上面的行并使用addReminderViewController 添加self,它可能会解决您的问题

[self.navigationController pushViewController:self.addReminderViewController animated:YES];

【讨论】:

以上是关于按下按钮时如何更改控制器,iOS?的主要内容,如果未能解决你的问题,请参考以下文章

按下网页按钮时更改iOS标签栏项目名称

使用 UIPageControl 在按钮按下时发送数据和更改页面

按下 xcode 7 / Swift 2 时如何更改按钮的图像? [复制]

在其中一个控制器中按下按钮时更改页面视图控制器中的视图

按下导航控制器左栏按钮时如何停止视图消失

按下按钮时iOS tableview冻结,控制台没有错误