Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 表视图单元格分段不工作_Objective C_Xcode_Uitableview - Fatal编程技术网

Objective c 表视图单元格分段不工作

Objective c 表视图单元格分段不工作,objective-c,xcode,uitableview,Objective C,Xcode,Uitableview,我试着做一件非常简单的事情:设置一个序列,这样当你点击表格中的一个单元格时,它会把你带到另一个视图控制器。我认为,问题的根源在于这些单元格所在的TableView嵌入了常规ViewController(与TableViewController相反)中,并且是该ViewController中两个子视图之一 据我所知,我已经正确地设置了一切:我在导航控制器中嵌入了带有两个子视图的ViewController,将其设置为TableView的数据源和委托,并创建了从TableViewCell到情节提要中

我试着做一件非常简单的事情:设置一个序列,这样当你点击表格中的一个单元格时,它会把你带到另一个视图控制器。我认为,问题的根源在于这些单元格所在的TableView嵌入了常规ViewController(与TableViewController相反)中,并且是该ViewController中两个子视图之一

据我所知,我已经正确地设置了一切:我在导航控制器中嵌入了带有两个子视图的ViewController,将其设置为TableView的数据源和委托,并创建了从TableViewCell到情节提要中第二个视图控制器的推送序列。但是,当应用程序运行并且用户单击表中的一行时,它只选择该行,而segue根本不会启动(我已经调试了它,甚至没有调用prepareForSegue函数)


这里有我遗漏的东西吗?或者,如果TableView不是其视图控制器中的唯一视图,出于某种原因,这是不可能的吗?

如果要在Xcode中创建情节提要,请执行以下操作:

  • 创建UITableViewController
  • 添加原型UITableViewCell
  • 创建将成为segue目标的UIViewController
  • 控件单击原型UITableViewCell并拖动到segue目标

  • 就这样。您可能希望将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:)相关非常感谢。解决了我的问题