0

我一直在寻找并尝试解决这个问题几个小时。我知道我犯了一个非常简单的错误,我只是不知道它是什么!

我正在尝试获取输入到两个不同 UITextFields 中的文本并将它们放入另一个 TableViewController 的表中。

我的 NSLog 返回我的 addGuestViewController 正在接收文本输入,但没有将其传输到我的 guestlistViewController。

guestlistViewController.h

@interface guestlistViewController : UITableViewController {
    NSString *firstnameInput;
    NSString *lastnameInput;
}
@property (nonatomic, retain) NSString *firstnameInput;
@property (nonatomic, retain) NSString *lastnameInput;

@end

guestlistViewController.m

@synthesize firstnameInput;
@synthesize lastnameInput;
NSString *fullname = [NSString stringWithFormat:@"%@ %@", firstnameInput, lastnameInput];

NSArray *array = [[NSArray alloc] initWithObjects: fullname, nil];
NSLog(@"Their name is: "%@", fullname);

addGuestListViewController.h

@interface addGuestViewController : UITableViewController

@property NSString *firstnameInput;
@property NSString *lastnameInput;

@end

addGuestListViewController.m

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    firstnameInput = firstname.text;
    lastnameInput = lastname.text;

    if (textField == firstname) {
        [textField resignFirstResponder];
        [lastname becomeFirstResponder];
    } else if (textField == lastname) {
        [textField resignFirstResponder];
        [self performSegueWithIdentifier:@"done" sender:self];
        NSLog(@"Their name is: %@, %@", firstnameInput, lastnameInput);
    }
    return YES;
}

如果有人能告诉我我做错了什么,那将是一个巨大的帮助,因为我对 Objective-C 编程还很陌生。

编辑:

我在想,因为我的 segue 指向导航控制器,它可能会导致问题,但不确定。

4

1 回答 1

0

您没有设置guestlistViewController 的属性、firstnameInput 和lastnameInput——在textFieldShouldReturn: 方法中,您将文本字段中的值分配给addGuestListViewController 的属性,而不是guestlistViewController 中的属性。您需要实现方法 prepareForSegue:sender:,并在该方法中使用 segue.destinationViewController 获得对 guestlistViewController 的引用。使用该参考,您可以在该视图控制器中设置属性的值。像这样的东西:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
     [(guestlistViewController *)[[(UINavigationController *)segue.destinationViewController viewControllers] lastObject] setFirstnameInput:firstnameInput];
     [(guestlistViewController *)[[(UINavigationController *)segue.destinationViewController viewControllers] lastObject] setLastnameInput:lastnameInput];
}
于 2012-10-05T02:03:29.987 回答