1

ボタン付きのView Controllerがあります。ユーザーがボタンをクリックすると、ユーザーがテーブルビューコントローラーに移動するようにします(つまり、テーブルビューが表示されます)。

ボタンをクリックすると、次のメソッドが呼び出されます。

- (void)loadTableViewController{

    TableViewViewController *tableViewController = [[TableViewController alloc]     initWithNibName:nil bundle:NULL];
    [self.navigationController pushViewController:tableViewController animated:YES];

}

最後の行の後のデバッグ モードでは、TableView コントローラーの実装ファイルが表示されるため、上記のコードは問題ないようです。ここで問題が発生します...私はtableViewのプロパティとして宣言しましたtableViewController

viewDidLoad メソッドのコードは次のとおりです。

[super viewDidLoad];
self.tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];

[self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"Cell"];
[self.view addSubview:self.tableView];

デバッグ モードでは、最後の行の後でプログラムが中断します。何が悪いのかまったくわかりません...私が行った唯一の他の変更は、テーブルの1つのセクションと1つの行を返すことです。そのコードは次のとおりです。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 1;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
    cell.textLabel.text = @"Test";
    return cell;
}

編集: エラーの詳細を追加します。

私が得るエラーは、一般的な "libc++abi.dylib: 種類 NSException (lldb) のキャッチされない例外で終了しています" のように見えます。

私は Xcode とプログラミング全般に非常に慣れていないことを覚えておいてください。そのため、特定のエラーを見つけるための適切な場所を見ていない可能性があります。

4

2 に答える 2

1

UITableViewController's初期化メソッドを使用していません。代わりに、

TableViewViewController *tableViewController = [[TableViewController alloc] initWithStyle:UITableViewStylePlain];
[self.navigationController pushViewController:tableViewController animated:YES];

その後、UITableViewControllerクラス内でテーブルビューを初期化しても意味がありUITableViewControllerません.tableViewself.tableView

- (void)registerClass:(Class)cellClass forCellReuseIdentifier:(NSString *)identifierまた、iOS 6.0 以降でのみ利用可能であることに注意してください(それ以下ではクラッシュします)。

セルにデータを入力するには、次を使用します。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"CellIdentifier";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
    }


    cell.textLabel.text = [NSString stringWithFormat:@"row %d", indexPath.row + 1];
    return cell;
}
于 2013-11-12T21:28:05.427 に答える
0

私の推測では、問題は次の行によって引き起こされます。

TableViewViewController *tableViewController = [[TableViewController alloc]     initWithNibName:nil bundle:NULL];

実際のペン先の名前がありません。nil を nib 名に置き換えます。

于 2013-11-12T21:27:05.077 に答える