不从UITableViewController调用prepareForSegue

时间:2013-08-16 08:59:48

标签: ios6 uitableview

我最近开始了iOS应用开发。

我有一个关于从UITableViewController到UIViewController的segue的问题。 单击一个表格单元时,不会调用“prepareForSegue”。

在我看来,代码和界面构建器设置很好。 Segue ID已正确设置。我也在navigationVC中嵌入了UITableVC。 我在prepareForSegue中设置了断点,但它并没有就此停止,也没有生成日志。

通过研究互联网上的技巧,我了解使用didSelectRowAtIndexPath是我的问题的解决方案之一。 但我想通过使用故事板来理解解决方案。

这可能是一个基本问题,但如果有人可以给我一些提示,那可能会非常有帮助。

谢谢,

@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

2 个答案:

答案 0 :(得分:1)

当我使用时:

[self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:CellIdentifier]; 在viewDidLoad

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,其他设置都相同。

答案 1 :(得分:0)

确保在Mainstoryboard中嵌入了UITableViewController的导航控制器。或者尝试在项目的rootViewController中嵌入导航控制器。然后在tableviewcell中设置重用标识符。有任何问题请分享。