3

以下は画面に表示されているものです(画面に表示されているものを表示しようとしました)

++++++++++++++++++++++++++++++++++
+                                +
+  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

つまり、すべてのメソッドが呼び出されていますが、まだデータを取得していません。

誰かが私が書く必要がある追加のコードを指摘できますか?

4

2 に答える 2

1

あなたのtable dataSource配列はself.devices配列であるため。

self.devicesその理由は、配列のdoesnot取得updated時に発生する可能性がありますsaving data

それではupdate self.devicesまずreload table

于 2012-12-31T08:21:27.510 に答える
0

メソッドに問題があると思いますcellForRowAtIndexPath。次のコード行を使用してみてください

**

static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
            cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}

**

それ以外の

static NSString *CellIdentifier = @"Cel3";
    UITableViewCell *cell = [myTableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
于 2012-12-31T08:41:30.480 に答える