-1

私は新しい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 と、ファイルの所有者に設定されたデリゲート。

私は何を間違えましたか?

4

2 に答える 2

1

ファイル所有者でIBOutletテーブルを接続する必要があると思います。

または

以下のように変更してください。

#import <UIKit/UIKit.h>
@interface FourthViewController : UITableViewController <UITableViewDataSource,UITableViewDelegate>
{
NSArray *contentArray;
}

@property (strong, nonatomic) IBOutlet UITableView *table;
- (void) switchChanged;
@end
于 2012-04-29T17:07:05.540 に答える
0

エラーはテーブルビューとは無関係でした

于 2012-06-05T14:06:03.340 に答える