0

最近iOSアプリの開発を始めました。

UITableViewController から UIViewController へのセグエに問題があります。テーブルセルがクリックされたときに「prepareForSegue」が呼び出されません。

コードとインターフェースビルダーの設定は問題ないように思えます。Segue ID が正しく設定されている。また、navigationVC にも UITableVC を埋め込みました。prepareForSegue にブレークポイントを設定しましたが、そこで停止せず、ログも生成されません。

インターネットでヒントを調べた結果、didSelectRowAtIndexPath を使用することが問題の解決策の 1 つであることを理解しました。しかし、ストーリーボードを使用して解決策を理解したいと思います。

初歩的な質問かもしれませんが、どなたかアドバイスいただけると助かります。

ありがとうございました、

@interface test2TVC ()
@property(strong,nonatomic) NSArray *items;
@end

@implementation test2TVC
- (void)viewDidLoad
{
    [super viewDidLoad];
     self.items = @[@"item1", @"item2", @"item3", @"item4",
               @"item5", @"item6", @"item7", @"item8"];

}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    NSLog(@"test log");
}  

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

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [self.items count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
     static NSString *CellIdentifier = @"Cell";
    [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"Cell"];
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
    cell.textLabel.text = [self.items objectAtIndex:indexPath.row];
    return cell;
}
@end
4

2 に答える 2

1

私が使用する場合:

[self.tableView registerClass:[UITableViewCell クラス] forCellReuseIdentifier:CellIdentifier]; ビューでDidLoad

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath] in cellForRowAtIndexPath

prepareForSegue は呼び出されません。

viewDidLoad の registerClass 行を削除すると、

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

cellForRowAtIndexPath では、prepareForSegue が呼び出されます。その他の設定はすべて同じです。

于 2014-01-21T02:07:02.517 に答える
0

Mainstoryboard に UITableViewController のナビゲーション コントローラーが埋め込まれていることを確認してください。または、プロジェクトの rootViewController にナビゲーション コントローラーを埋め込んでみてください。次に、tableviewcell に再利用識別子を設定します。問題があれば共有してください。

于 2013-08-16T12:03:18.730 に答える