iphone - 以编程方式使用按钮更改视图

时间:2012-11-30 20:19:54

标签: iphone objective-c cocoa-touch uiviewcontroller

我在iphone dev上阅读了关于故事板的tutorial。那家伙通过按钮改变了观点。但是按钮的连接是通过界面构建​​器完成的。我如何以编程方式执行此操作,以便在更改视图之前进行一些检查(例如用户名/密码)? 提前谢谢。

2 个答案:

答案 0 :(得分:2)

将一个视图与另一个视图连接(不是视图中的按钮)。 将segue更改为custom并为其指定标识符(在IB中)。例如:登录

然后创建一个动作并将其指定给按钮。

在按钮操作中使用:

[self performSegueWithIdentifier:@"Login" sender:self];

创建一个Segue类对象,并在.m中使用类似:

UIViewController *dst = [self destinationViewController];
UIViewController *nav = [self sourceViewController];

//All your custom code

[nav presentModalViewController:dst animated:YES];

编辑:忘了重要的事情!

在IB中,在Segueconfiguratión中,放入Segue Class,创建了Segue Class的名称。例如:LoginSegue是创建的segue的名称,在Segue Class中你必须写“LoginSegue”

编辑:创建班级:

1.-创建一个扩展UIStoryBoardSegue的新文件,.h会是这样的:

#import <Foundation/Foundation.h>

@interface LoginSegue : UIStoryboardSegue

@end

2.-在实现中,在名为perform:

的方法中使用上面的代码
-(void)perform
{

UIViewController *dst = [self destinationViewController];
UIViewController *nav = [self sourceViewController];

 //Custom Code

 [nav presentModalViewController:dst animated:YES];

}

如果需要访问源viewController的属性,则需要更改:

UIViewController *nav = [self sourceViewController];

eYourClass *nav = [self sourceViewController];

希望这有帮助!

答案 1 :(得分:0)

您可以创建按钮并将touchUpInside操作拖到界面构建器中的IBAction

或代码viewDidLoad

中的代码
  [self.login addTarget:self action:@selector(loginTapped) forControlEvents:UIControlEventTouchUpInside];

然后loginTapped方法看起来像

- (void)loginTapped;
{
  if ([self authenticateWithUsername:self.username.text password:self.password.text]) {
    [self performSegueWithIdentifier:@"loginSuccessful" sender:self];
  } else {
    // Warn user about invalid username/password
  }
}

这依赖于您在故事板中创建了一个名称与identifier参数匹配的segue