以下は画面に表示されているものです(画面に表示されているものを表示しようとしました)
++++++++++++++++++++++++++++++++++
+ +
+ TextField-Name +
+ +
+ Save Button +
+ +
+ UITableView +
+ . +
+ . +
+ . +
+ +
++++++++++++++++++++++++++++++++++
保存ボタンをクリックすると、データが保存され、下の表ビューに同じものが表示されます。問題は、[保存] をクリックするとデータが保存されることですが、UITableView
. 私は[self.myTableView reloadData];
トリックを行うと信じていますが、そうではありません。
以下は私が持っているコードです。
.h ファイル
#import <UIKit/UIKit.h>
@interface DeviceDetailViewController : UIViewController<UITableViewDelegate, UITableViewDataSource>
@property (weak, nonatomic) IBOutlet UITextField *nameTextField;
@property (strong, nonatomic) IBOutlet UITableView *myTableView;
- (IBAction)save:(id)sender;
@end
.m ファイル
@interface DeviceDetailViewController ()
@end
@implementation DeviceDetailViewController
@synthesize myTableView;
- (IBAction)save:(id)sender {
// code for saving data
NSLog(@"saved data and now reload data.... started....");
[self.myTableView reloadData];
// I thought this statement will do magic... but its not....
NSLog(@"saved data and now reload data.... finised....");
}
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
// Return the number of sections.
return 1;
}
- (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
NSLog(@"numberOfRowsInSection %d", self.devices.count);
return self.devices.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cel3";
UITableViewCell *cell = [myTableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
// Configure the cell...
NSManagedObject *device = [self.devices objectAtIndex:indexPath.row];
NSLog(@"cellForRowAtIndexPath %@ %@ by %@", [device valueForKey:@"name"], [device valueForKey:@"version"], [device valueForKey:@"company"]);
[cell.textLabel setText:[NSString stringWithFormat:@"%@ %@", [device valueForKey:@"name"], [device valueForKey:@"version"]]];
[cell.detailTextLabel setText:[device valueForKey:@"company"]];
return cell;
}
アプリを実行すると、以下が表示されますNSLOG
2012-12-31 11:52:34.222 MyStore[720:11603] numberOfRowsInSection 0
2012-12-31 11:52:34.627 MyStore[720:11603] numberOfRowsInSection 2
2012-12-31 11:52:34.628 MyStore[720:11603] cellForRowAtIndexPath iPhone 4s by Apple
2012-12-31 11:52:34.629 MyStore[720:11603] cellForRowAtIndexPath X10 Mini Pro by Sony
何かを追加すると、
2012-12-31 11:53:21.868 MyStore[720:11603] saved data and now reload data.... started....
2012-12-31 11:53:21.869 MyStore[720:11603] numberOfRowsInSection 2
2012-12-31 11:53:21.870 MyStore[720:11603] saved data and now reload data.... finised....
2012-12-31 11:53:21.871 MyStore[720:11603] cellForRowAtIndexPath iPhone 4s by Apple
2012-12-31 11:53:21.872 MyStore[720:11603] cellForRowAtIndexPath X10 Mini Pro by Sony
つまり、すべてのメソッドが呼び出されていますが、まだデータを取得していません。
誰かが私が書く必要がある追加のコードを指摘できますか?