私は iOS 開発にまったく慣れていません (以下のコードからわかるように)。既存のコードを操作して何か違うことをすることで、新しい言語を学ぶのが好きです。しかし、私はこれで少し空白になりました。テーブル ビューの各セクションの最後で、使用しているデータがリセットされ、続行する代わりに再び開始されます。ここのどこに問題があるのか誰か教えてください。
#import "RootViewController.h"
#import "DataController.h"
#import "DetailViewController.h"
#import "Play.h"
@implementation RootViewController
@synthesize dataController;
@synthesize play;
#pragma mark -
#pragma mark View lifecycle
- (void)viewDidLoad {
[super viewDidLoad];
self.title = NSLocalizedString(@"Plays", @"Master view navigation title");
}
#pragma mark -
#pragma mark Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
// Only one section.
return 3;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
/*
The number of rows varies by section.
*/
NSInteger rows = 0;
switch (section) {
case 0:
rows = 3;
break;
case 1:
rows = 1;
break;
case 2:
rows = 2;
break;
default:
break;
}
return rows;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath
*)indexPath {
static NSString *CellIdentifier = @"PlayCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
// Get the object to display and set the value in the cell.
Play *playAtIndex = [dataController objectInListAtIndex:indexPath.row];
cell.textLabel.text = playAtIndex.title;
return cell;
}
// Section header titles
#pragma mark -
#pragma mark Section header titles
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:
(NSInteger)section {
NSString *secttitle = nil;
switch (section) {
case 0:
secttitle = NSLocalizedString(@"Comedy", @"Comedy section title");
break;
case 1:
secttitle = NSLocalizedString(@"Action", @"Action section title");
break;
case 2:
secttitle = NSLocalizedString(@"Drama", @"Drama section title");
break;
default:
break;
}
return secttitle;
}
// End of section header titles
#pragma mark -
#pragma mark Table view selection
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
/*
When a row is selected, the segue creates the detail view controller as the destination.
Set the detail view controller's detail item to the item associated with the selected
row.
*/
if ([[segue identifier] isEqualToString:@"ShowSelectedPlay"]) {
NSIndexPath *selectedRowIndex = [self.tableView indexPathForSelectedRow];
DetailViewController *detailViewController = [segue destinationViewController];
detailViewController.play = [dataController objectInListAtIndex:selectedRowIndex.row];
}
}
@end
これまでのご返信ありがとうございます。詳細ビューは正常に動作し、これまでのフィードバックから判断すると、このコードが評価されていないことが原因のようですが、マスター ビューのどこに組み込むかがわかりません。
NSString *cellText = nil;
switch (indexPath.section) {
case 0:
cellText = play.date;
break;
case 1:
cellText = play.genre;
break;
case 2:
cellText = [play.characters objectAtIndex:indexPath.row];
break;
default:
break;
}
cell.textLabel.text = cellText;
return cell;