Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何将函数从一个viewcontroller调用到另一个控制器?_Ios_Objective C - Fatal编程技术网

Ios 如何将函数从一个viewcontroller调用到另一个控制器?

Ios 如何将函数从一个viewcontroller调用到另一个控制器?,ios,objective-c,Ios,Objective C,设置存储 @interface SettingsStore : IASKAbstractSettingsStore { @public NSDictionary *dict; NSDictionary *changedDict; } - (void)removeAccount; @end menuView.m -(IBAction)onSignOutClick:(id)sender {

设置存储

@interface SettingsStore : IASKAbstractSettingsStore    
{      
    @public     
    NSDictionary *dict;     
    NSDictionary *changedDict;    
}    

- (void)removeAccount;    
@end
menuView.m

-(IBAction)onSignOutClick:(id)sender    
{        
    SettingsStore *foo = [[SettingsStore alloc]init];    
    [foo removeAccount];    
    [self.navigationController pushViewController:foo animated:YES];       
    exit(0);
}
我想从menuView.m调用这个removeAccount函数。但是我犯了一个错误。


如何修复它并调用此removeAccount。

您正在从menuView.m文件中正确调用removeAccount,但代码中存在几个问题:

  • 您将foo视为UIViewController,实际上它是SettingStore类的成员。SettingStore类是指一个实际的屏幕,还是更像一个数据对象(用于存储设置?)。如果是后者,你不想把它推下去。您可以创建并使用它,但用户不需要看到它

  • 您正在呼叫出口(0);您可以删除该行。如果要从内存中删除menuView.m文件,请删除对该文件的引用(例如,从其父视图控制器)

  • menuView.m文件令人困惑,例如,它是视图还是视图控制器。我通常会将iAction粘贴在ViewController文件中,而不是视图文件中。您的基本设计模式是MVC(模型/视图/控制器)。在本例中,您的SettingStore文件似乎是一个模型(数据),menuView.m是一个视图,您的代码是针对控制器位的


  • 您正在从menuView.m文件中正确调用removeAccount,但您的代码存在几个问题:

  • 您将foo视为UIViewController,实际上它是SettingStore类的成员。SettingStore类是指一个实际的屏幕,还是更像一个数据对象(用于存储设置?)。如果是后者,你不想把它推下去。您可以创建并使用它,但用户不需要看到它

  • 您正在呼叫出口(0);您可以删除该行。如果要从内存中删除menuView.m文件,请删除对该文件的引用(例如,从其父视图控制器)

  • menuView.m文件令人困惑,例如,它是视图还是视图控制器。我通常会将iAction粘贴在ViewController文件中,而不是视图文件中。您的基本设计模式是MVC(模型/视图/控制器)。在本例中,您的SettingStore文件似乎是一个模型(数据),menuView.m是一个视图,您的代码是针对控制器位的


  • 代码中几乎没有错误,请在下面查找

  • [foo removeAccount];调用此方法是正确的
  • [self.navigationController-pushViewController:foo-animated:YES]
    不正确,因为SettingsStore不是的子类 UIViewController只能推送到UIViewController的子类 导航控制器
  • 出口(0);调用此方法不正确 苹果推荐

  • 代码中几乎没有错误,请在下面查找

  • [foo removeAccount];调用此方法是正确的
  • [self.navigationController-pushViewController:foo-animated:YES]
    不正确,因为SettingsStore不是的子类 UIViewController只能推送到UIViewController的子类 导航控制器
  • 出口(0);调用此方法不正确 苹果推荐

  • 为什么要退出(0)。它将使应用程序崩溃。@Prasen您在使用情节提要吗?
    IASKAbstractSettingsStore
    不是
    UIViewController
    的子类您的问题不是调用
    removeAccount
    ,您的问题是试图将
    foo
    作为
    UIViewController
    推送,您只能推送UIViewController类,而不能推送其他类,因此发生了此崩溃。并且还要删除出口(o),因为它将终止您的应用程序为什么放置出口(0)。它将使应用程序崩溃。@Prasen您在使用情节提要吗?
    IASKAbstractSettingsStore
    不是
    UIViewController
    的子类您的问题不是调用
    removeAccount
    ,您的问题是试图将
    foo
    作为
    UIViewController
    推送,您只能推送UIViewController类,而不能推送其他类,因此发生了此崩溃。并删除退出(o),因为它将终止您的应用程序