私は新しいiPhoneプログラマーです。ナビゲーションベースのアプリを作成しています。ビューの 1 つにテーブルビューが含まれています。ビュー内のスイッチを備えたテーブルビューを使用する単一ビュー アプリを正常に作成しましたが、ナビゲーション ベースのアプリでコードを試すと、次のようにクラッシュします: スレッド 1: プログラムが信号を受信しました: "SIGABRT".
ここに私のコードがあります: FourthViewController.h
#import <UIKit/UIKit.h>
@interface FourthViewController : UIViewController {
NSArray *contentArray;
}
@property (strong, nonatomic) IBOutlet UITableView *table;
- (void) switchChanged;
@end
FourthViewController.m
@implementation FourthViewController
@synthesize table;
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
- (void)viewDidLoad
{
contentArray = [NSArray arrayWithObjects:
@"One",
@"Two",
@"Three", nil];
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)viewDidUnload
{
[self setTable:nil];
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
}
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
}
- (void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
} else {
return YES;
}
}
//Table View
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
//return 0;
return [contentArray count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] ;
UISwitch *switchview = [[UISwitch alloc] initWithFrame:CGRectZero];
[switchview setOn:YES animated:NO];
NSInteger row;
row = [indexPath row];
switchview.tag = row;
[switchview addTarget:self action:@selector(switchChanged:) forControlEvents:UIControlEventValueChanged];
cell.accessoryView = switchview;
}
cell.textLabel.text = [contentArray objectAtIndex:indexPath.row];
return cell;
}
- (void) switchChanged:(id)sender{
UISwitch *switchview = sender;
if (switchview.tag == 0) {
NSLog(@"First");
}
}
@end
FourthViewController.xib には以下が含まれます。 テーブル プロパティ データ ソースに接続された TableView と、ファイルの所有者に設定されたデリゲート。
私は何を間違えましたか?