とてもシンプルなアプリを作って絵コンテの使い方を学んでいます。メインのViewController(InfoViewController
)には、次の名前のtextFieldがありますnameField
。このフィールドにテキストを入力した後、save
ボタンを入力すると、テキストが配列(list
)(で宣言されてTableViewController
いる)に追加され、のテーブルに表示されるはずTableViewController
です。
また、セグエ識別子は次のとおりGoToTableViewController
です。
ただし、テキストは(配列)nameField
に渡されません。list
最初は、textFieldを間違えていると思いました。そこで、静的なテキストに置き換えました。しかし、それも役に立ちませんでした。次に、NSLog()を使用して文字列が配列に追加されているかどうかを確認しましたが、取得するたびにNull
。私の理解では、list
(配列)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の値の使用を間違えていないかどうかを確認しました。(**)このステートメントは、配列に挿入された値をチェックするためのものです。
TableViewController.h
#import <UIKit/UIKit.h>
@class InfoViewController;
@interface TableViewController : UITableViewController
@property (nonatomic, strong) NSMutableArray *list;
@property (strong, nonatomic) InfoViewController *infoViewController;
@end
TableViewController.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