我正在尝试做一些非常简单的事情:设置一个segue,这样当你点击表格中的一个单元格时,它会带你到另一个View Controller。我相信这个问题源于这些单元格所在的TableView嵌入在常规ViewController中(而不是TableViewController),并且是此ViewController中的两个子视图之一。
据我所知,我已经正确设置了所有内容:我将ViewController与导航控制器中的两个子视图嵌入,将其设置为TableView的dataSource和委托,并从中创建了一个push segue。 TableViewCell到故事板中的第二个View Controller。但是,当应用程序运行并且用户单击表中的一行时,它只会选择行,并且segue根本不会触发(我已经调试了它,并且甚至没有调用prepareForSegue函数)。 / p>
这里有什么我想念的吗?或者,如果TableView不是其视图控制器中的唯一视图,那么这是不可能的?
答案 0 :(得分:4)
这可能会或可能不会对您有所帮助,但我遇到了这个问题,因为我已经定义了两种不同的单元格类型,并提供了didSelectRowAtIndexPath
实现。我必须添加[self performSegueWithIdentifier:@"Whatever" sender:self]
作为didSelectRowAtIndexPath
的一部分,问题得到解决。
如果您至少能够检测到行选择,则可以使用此方法。
答案 1 :(得分:4)
如果您已自定义单元格渲染,例如:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
然后确保您使用的是与故事中原型单元格相同的单元格标识符。
因此,在这种情况下,连接segue的单元格的'Identifier'应设置为' Cell '。
答案 2 :(得分:4)
我发现如果我最近从单元的附件视图中连接了segue,然后删除了segue并尝试直接将新的segue连接到单元格,那么不工作(使用Xcode 4.6 .2) - Xcode将segue连接到附件视图(即使没有)!我修复它的方法是通过选择IB中的单元格并使用连接检查器来(1)删除原始的“附件动作”segue和(2)通过拖动从下面图像中的实心圆圈直接连接“选择”segue到适当的目标视图控制器。
答案 3 :(得分:2)
如果您在Xcode中创建StoryBoard,请执行以下操作:
就是这样。您可能希望编辑UITableViewCell的特性,例如,您的UITableViewCell的子类。
答案 4 :(得分:0)
我有类似的问题。 修复是 1.在Storyboard中为segue编写SegueIdentifier 2.添加以下行[self performSegueWithIdentifier:@" SegueIdentifier"发件人:无];在didSelectRowAtIndexPath。
我希望这会有所帮助。
答案 5 :(得分:-1)
有同样的问题。从常规View Controller中的原型表视图单元中查看将导致应用程序崩溃。万一有人有同样的问题。
我的解决方案:
如果您正在使用推送segue,请确保您的第一个带有表视图的View Controller嵌入在导航控制器中,否则"推送segues"不会工作。还要将segue指向目标View Controller,而不是其导航控制器!
如前所述,请确保您的" segue标识符"是对的。
at" didSelectRowAtIndexPath"我打电话给#34; [self performSegueWithIdentifier:@" Your_destination_View_Controller"发件人:自];