Iphone 将NSString从一个Tableviewcontroller传递到另一个Tableviewcontroller

Iphone 将NSString从一个Tableviewcontroller传递到另一个Tableviewcontroller,iphone,objective-c,xcode,Iphone,Objective C,Xcode,我已经搜索并试图解决这个问题几个小时了。我知道我犯了一个很简单的错误,我只是不知道那是什么 我试图获取输入到两个不同UITextField中的文本,并将它们放入另一个TableViewController的表中 我的NSLog返回我的addGuestViewController正在接收文本输入,但没有将其传输到我的guestlistViewController guestlistViewController.h @interface guestlistViewController : UITab

我已经搜索并试图解决这个问题几个小时了。我知道我犯了一个很简单的错误,我只是不知道那是什么

我试图获取输入到两个不同UITextField中的文本,并将它们放入另一个TableViewController的表中

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

guestlistViewController.h

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

@end
@interface addGuestViewController : UITableViewController

@property NSString *firstnameInput;
@property 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);
- (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;
}
addGuestListViewController.h

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

@end
@interface addGuestViewController : UITableViewController

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

@end
addGuestListViewController.m

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

NSArray *array = [[NSArray alloc] initWithObjects: fullname, nil];
NSLog(@"Their name is: "%@", fullname);
- (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指向导航控制器,这可能会导致问题,但不确定。

您没有设置guestlistViewController的属性、firstnameInput和lastnameInput——在textFieldShouldReturn:方法中,您正在将文本字段中的值指定给addGuestListViewController的属性,而不是guestlistViewController中的属性。您需要实现方法prepareforsgue: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];
}

不,那不对。在该方法中,segue.destinationViewController将是gestlistViewController——您不应该执行任何alloc init。编辑后的答案返回一个错误,称为“使用未声明的标识符‘guestlistViewController’”。这只是一个想法,但我的segue是否会导致问题,因为我将它指向GuestListController之前的导航控制器?我让它这样做,使菜单栏和下标签栏保持不变,但尽管如此……我不知道我是否拼写正确——我在你的帖子中使用了拼写,但类的名称应该大写。另外,您是否已将guestlistViewController的标题导入addGuestListViewController.m文件?是的,这可能是个问题,您应该在原始帖子中提到。它们拼写正确。但是,我没有导入guestlistViewController(反之亦然)。导入addGuestListViewController.m后,我得到一个SIGABRT“-[UINavigationController setFirstnameInput:]:发送到实例的无法识别的选择器”