-1

我有两种看法。一种视图是注册视图。当用户单击注册 UIBarButtonItem 时,它会将他们带到该视图。在该视图上,还有另一个 UIBarbuttonitem 显示“返回” - 因此当用户单击该按钮时,它会将他们带到上面有注册按钮的主视图。然后如果用户再次点击注册按钮,就会抛出这个错误;

2012-09-26 19:22:53.256 Users[14763:c07] -[Registration signUp:]: unrecognized selector sent to instance 0x747e5b0
2012-09-26 19:22:53.257 Users[14763:c07] *** Terminating app due to uncaught exception

UsersViewController.h

@interface UsersViewController : UIViewController
@property (nonatomic, strong) Registration *registration;

UsersViewController.m
Signup event:
    self.registration = [[Registration alloc]initWithNibName:@"Registration" bundle:nil];
    [self.view addSubview:self.registration.view];

Registration.h
    @interface Registration : UIViewController
    @property (nonatomic, strong) Registration *mainView; 

Registration.m
Back button Event
   self.mainView = [[Registration alloc]initWithNibName:@"UsersViewController" bundle:nil];     

[self.view addSubview:self.mainView.view]

4

1 回答 1

-1

当按下条形按钮时,处理代码应如下所示:

- (IBAction)showRegistration:(id)sender
{
    Registration *registrationViewController = [[Registration alloc] init];
    [self.navigationController pushViewController:registrationViewController];
}

确保您的主视图控制器嵌入在导航控制器中,并且操作系统应该为您完成其余的工作。您的注册视图控制器上会有一个后退按钮,可以将您的用户带回到上一个视图。addSubview 不是通常用于在这样的视图之间导航的方法。你也可以使用

[self presentViewController:registrationViewController animated:YES];

或者如果你使用故事板,

[self performSegueWithIdentifier:@"go to registration view"];

有很多方法可以做到这一点,但 addSubview 不是你要找的机器人。

此外,您不想为呈现的视图控制器提供指向其呈现器的属性。您应该阅读 Cocoa 中的委托设计模式。您需要为 Registration 视图控制器提供一个委托属性,在 MainViewController 出现时将其分配为 Registration 视图控制器的委托,然后为 MainViewController 实现一个委托回调方法,以便在您的 Registration 视图时执行所需的任何工作控制器被解雇。

于 2012-09-27T01:46:06.247 回答