关于cocoa touch:Xcode 5 使用按钮切换视图控制器

Xcode 5 using a button to switch view controllers

好的,我是 iOS 开发的新手,我只想按下"登录"按钮,如果我的文本字段为空,则发送 UIAlertView。如果它不为空,则导航到视图控制器"TimeClockView",但它不导航到 TimeClockView。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#import"ViewController.h"
#import"TimeClockView.h"

………………

- (void)LogIn:(id)sender
{
    if ([nameTextField.text  isEqual: @""])
    {
        UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"What's The Issue?"
                                                          message: [NSString stringWithFormat:@"Enter Your Name"]    
                                                         delegate:nil
                                                cancelButtonTitle:@"OK"
                                               otherButtonTitles: nil];
        [message show];
        return;
    }
    else
    {
        TimeClockView *temp = [[TimeClockView alloc]initWithNibName:nil bundle:nil];
        [self.navigationController pushViewController:temp animated:YES];

        name = nameTextField.text;
    }

需要有一个动作来执行一个转场。
所以我创建了另一个按钮,用它创建了一个 segue。
然后在我的原始按钮中使用 if 语句(IBAction)
去另一个视图控制器


您正在使用 nil nib 名称初始化您的 temp 对象。需要该参数才能知道要实例化哪个 ViewController(带有相应的 nib)。如果您使用 nibs 来构建 ViewController,则将您的实例化代码更改为如下内容:

1
TimeClockView *temp = [[TimeClockView alloc] initWithNibName:@"YourNibName" bundle:nil];

使用 "YourNibName" 来命名您的 nib 文件。

但是,如果您使用 Storyboard,那么呈现其他 ViewController 的方式完全不同。您需要研究使用情节提要执行 segues。

另外,在比较字符串时,您需要使用 isEqualToString: 方法。所以像这样重写你的 if/else 语句:

1
2
3
4
5
6
7
if ([nameTextField.text isEqualToString:@""])
{
    //do stuff
}
else {
    //do other stuff
}