【发布时间】:2015-10-10 02:20:51
【问题描述】:
我正在制作一个使用付款方式的 iOS 应用。
目前我正在尝试处理结帐流程,其中包含一个 OderFormViewController 和一个 CheckoutTableViewController,如下所示:
我通过拖动一个 segue 将两者连接起来,以蓝色突出显示。我还为我的 segue 添加了一个 segue 标识符。
我将第一个视图控制器称为E_OrderFormViewController(它的标题是送货地址),并在其中为我的继续按钮创建了一个IBAction,还使用-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 来传递信息。
我还有一个 Order 模型,其中包含一些属性。在我的 CheckoutTableViewController 上,我将标签和 orderInfo 作为公共属性,因此第一个视图控制器可以访问它。
#import <Foundation/Foundation.h>
@interface Order : NSObject
@property(strong, nonatomic) NSString *shippingName;
@property (strong, nonatomic) NSString *shippingAddress;
@property (strong, nonatomic) NSString *shippingCity;
@property(strong, nonatomic) NSString *shippingState;
@property(strong, nonatomic) NSString *shippingZip;
@end
//E_OrderFormViewController.m
#import "E_OrderFormViewController.h"
#import "F_CheckoutTableViewController.h"
...
#pragma mark - My Actions
- (IBAction)storePaymentInfoProceedToConfirmation:(id)sender {
[self performSegueWithIdentifier:@"toCheckout" sender:self];
}
#pragma mark - Navigation
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
if ([[segue identifier] isEqualToString:@"toCheckout"]) {
F_CheckoutTableViewController *checkoutView = segue.destinationViewController;
//Store Information and pass it to next view
checkoutView.orderInfo.shippingName = self.txtFieldNameOnCard.text;
NSLog(@"Shipping Name Stored: %@",checkoutView.orderInfo.shippingName);
}
}
我的NSLog 总是为我在我的第一个文本字段中输入的任何文本返回 (null),这是我首先测试的文本。
这是我的CheckoutTableViewController,及其公共财产。 orderInfo在此处列出。如上所述,我正在使用它来传递信息:
//F_CheckoutTableViewController.h
#import <UIKit/UIKit.h>
@interface F_CheckoutTableViewController : UITableViewController
@property (strong, nonatomic)Order *orderInfo;
@end
在我的viewDidLoad 上,在我的目标视图控制器上,我做了:
//F_CheckoutTableViewController.m
@implementation F_CheckoutTableViewController
- (void)viewDidLoad {
[super viewDidLoad];
//Load all information
self.labelShippingName.text = self.orderInfo.shippingName;
NSLog(@"Typed Name: %@",self.orderInfo.shippingName);
}
我刚刚粘贴了viewDidLoad 作为参考,因为我知道如果我的NSLog 中的prepareForSegue 没有返回任何内容,则信息没有被传递。
我真的不知道错误在哪里。我在 StackOverFlow 上搜索了几个线程,没有一个对我有帮助,一个似乎相似的,是这个,但它对我的问题没有帮助:
Multiple segues not passing Object data between themselves
这似乎很简单,但我犯了一些我找不到的错误。
非常感谢您的帮助。
【问题讨论】:
标签: ios objective-c iphone ios9