我正在通过制作一个非常简单的应用程序来学习如何使用故事板。在主视图控制器 ( InfoViewController
) 上,我有一个名为的 textField: nameField
。在此字段中输入文本后,当我输入save
按钮时,文本应附加到数组 ( list
)(在 中声明TableViewController
)并显示在 中的表格上TableViewController
。
此外,segue 标识符是:GoToTableViewController
.
但是,文本不会传递nameField
给list
(数组)。起初,我认为我在使用 textField 时犯了一些错误。所以我用静态文本替换了它。但这也无济于事。然后我使用 NSLog() 检查字符串是否已添加到数组中,但每次我得到Null
. 据我了解,list
(array) 在TableViewController
加载之前不会创建。出于这个原因,我alloc
在init
list
InfoViewController 中。但这无济于事。
有人可以帮我找出我犯的错误吗?
谢谢!
我的代码的相关部分如下:
InfoViewController.h
#import <UIKit/UIKit.h>
@class TableViewController;
@interface InfoViewController : UIViewController
@property (weak, nonatomic) IBOutlet UITextField *nameField;
@property (strong, nonatomic) TableViewController *tableViewController;
@end
InfoViewController.m
#import "InfoViewController.h"
#import "TableViewController.h"
@implementation InfoViewController
@synthesize nameField;
@synthesize tableViewController;
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
tableViewController = [[TableViewController alloc] init];
tableViewController.list = [[NSMutableArray alloc] init];
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if([segue.identifier isEqual:@"GoToTableViewController"])
{
/* Pass data to list and then reloadTable data */
tableViewController = segue.destinationViewController;
tableViewController.infoViewController = self;
// (*) [tableViewController.list addObject:nameField.text];
// (*) [tableViewController.list addObject:@"Hi!"];
[tableViewController.list insertObject:@"Hi" atIndex:0];
// (**) NSLog(@"%@", [tableViewController.list objectAtIndex:0]);
[tableViewController.tableView reloadData];
}
}
@end
( * ) 我插入了这些语句以查看我在使用 nameField 中的值时是否犯了错误。( ** ) 此语句用于检查插入到数组中的值。
表视图控制器.h
#import <UIKit/UIKit.h>
@class InfoViewController;
@interface TableViewController : UITableViewController
@property (nonatomic, strong) NSMutableArray *list;
@property (strong, nonatomic) InfoViewController *infoViewController;
@end
表视图控制器.m
#import "TableViewController.h"
#import "InfoViewController.h"
@implementation TableViewController
@synthesize list;
@synthesize infoViewController;
- (void)viewDidLoad
{
[super viewDidLoad];
self.navigationItem.rightBarButtonItem = self.editButtonItem;
list = [[NSMutableArray alloc] init];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{ return 1; }
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{ return list.count; }
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
cell.textLabel.text = [list objectAtIndex:indexPath.row];
return cell;
}
@end