Objective c 表视图单元格分段不工作
我试着做一件非常简单的事情:设置一个序列,这样当你点击表格中的一个单元格时,它会把你带到另一个视图控制器。我认为,问题的根源在于这些单元格所在的TableView嵌入了常规ViewController(与TableViewController相反)中,并且是该ViewController中两个子视图之一 据我所知,我已经正确地设置了一切:我在导航控制器中嵌入了带有两个子视图的ViewController,将其设置为TableView的数据源和委托,并创建了从TableViewCell到情节提要中第二个视图控制器的推送序列。但是,当应用程序运行并且用户单击表中的一行时,它只选择该行,而segue根本不会启动(我已经调试了它,甚至没有调用prepareForSegue函数)Objective c 表视图单元格分段不工作,objective-c,xcode,uitableview,Objective C,Xcode,Uitableview,我试着做一件非常简单的事情:设置一个序列,这样当你点击表格中的一个单元格时,它会把你带到另一个视图控制器。我认为,问题的根源在于这些单元格所在的TableView嵌入了常规ViewController(与TableViewController相反)中,并且是该ViewController中两个子视图之一 据我所知,我已经正确地设置了一切:我在导航控制器中嵌入了带有两个子视图的ViewController,将其设置为TableView的数据源和委托,并创建了从TableViewCell到情节提要中
这里有我遗漏的东西吗?或者,如果TableView不是其视图控制器中的唯一视图,出于某种原因,这是不可能的吗?如果要在Xcode中创建情节提要,请执行以下操作:
就这样。您可能希望将UITableViewCell的特征编辑为UITableViewCell的子类。这可能对您有帮助,也可能对您没有帮助,但我遇到了这个问题,因为我定义了两种不同的单元格类型,并提供了
didSelectRowatinexPath
实现。我必须添加[self-performsguewithidentifier:@“which”发送者:self]
作为的一部分,并选择rowatindexpath
,问题得到了解决
如果您至少能够检测行选择,则可以利用此方法。如果您已自定义单元渲染,例如:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
然后确保使用的单元标识符与在ste story中为原型单元指定的相同
因此,在这种情况下,连接segue的单元的“标识符”应设置为“单元”。我发现,如果我最近从单元的附件视图连接segue,然后删除segue,并尝试将新segue直接连接到单元,它将不起作用(使用Xcode 4.6.2)--Xcode将继续将segue连接到附件视图(即使没有附件视图)!我修复它的方法是选择IB中的单元格,并使用连接检查器(1)删除原始的“附件操作”序列,(2)通过从下图中的填充圆拖动到相应的目标视图控制器,直接连接“选择”序列
也有同样的问题。从常规视图控制器中的原型表视图单元中分离会导致应用程序崩溃。以防有人有同样的问题 我的解决方案: 如果您使用的是push segue,请确保带有表视图的第一个视图控制器嵌入到导航控制器中,否则“push segue”将无法工作。同时将segue指向目标视图控制器,而不是其导航控制器 如前所述,确保您的“segue标识符”是正确的 在“didSelectRowAtIndexPath”中,我调用“[self-PerformsgueWithIdentifier:@“Your_destination\u View\u Controller”发送者:self];我遇到了类似的问题。 修复是 1.在序列图像板中为序列写入序列标识符 2.在didSelectRowAtIndexPath中添加以下行[self-performSegueWithIdentifier:@“SegueIdentifier”发送方:nil]
我希望这会有所帮助。您是否为表格单元格指定了唯一标识符?我在情节提要(原型单元格的属性)中为单元格指定了标识符“LoadCell”在cellForRowAtIndexPath函数中;这是正确的,还是每个单元格在创建时都应该有一个不同的标识符?这正是我所做的,只是我没有一个UITableViewController,而是有一个常规的UIViewController,带有一个UITableView(以及另一个UIView)作为主视图中的子视图。它仍然不起作用。在Xcode中,tableViewCell“推送”情节提要segue是否链接到作为segue目标的控制器?这为我解决了问题,但发送方作为单元格:
sender:[self.tableView cellForRowAtIndexPath:indexPath]
在过去的两个小时里,我一直在努力解决这个问题(今天晚上才开始胡闹Objective-C。非常感谢,这让我抓狂!对我来说很有效。谢谢!添加PerformsgueWithIdentifier会使我的应用程序崩溃,在-[UITableViewCell\u setHostsLayoutEngine:]中抛出断言失败。显然以前没有人解决过这个问题,因为在这里没有答案。添加PerformsgueWithIdentifier会使我的应用程序崩溃,并在-[UITableViewCell\u setHostsLayoutEngine:]中抛出断言失败。显然以前没有人解决过这个问题,因为在这里没有答案。仍然与Xcode 8:)相关非常感谢。解决了我的问题