2013-09-23 49 views
2

我有一个使用XiBs在iOS4中开发的应用程序。我对iOS6.1及更早版本的工作非常满意。但是对于一些按钮,如果它是iPhone和iOS 7.0,IBAction不会被调用。 iPad和iOS 7.0也可以正常工作。当然,我正在为iPhone和iPad使用不同的Xibs。 这是代码。这是非常基本的。但只是没有进入它。iOS 7 XCode 5.0 IBAction不叫

- (IBAction) didReceiveMapButtonPress { 
    NSLog(@"IN DID RECEIVE MAP BUTTON PRESS"); 
    if ([self wasReferredFromMap]) { 
    [[self navigationController] popViewControllerAnimated:YES]; 
    } else { 
    [self pushMapViewController]; 
    } 
    } 
+0

类别请检查您的使用按钮再次或过去的按钮代码... – Hindu

+0

Kokx喜联,感谢您的答复。我认为我的链接很好,因为它与iOS5.0,5.1,6.0和6.1一起工作。 –

+0

你可以发布IBAction方法的代码吗?所以我将能够理解问题... – Hindu

回答

4

许多开发人员使用自定义视图在旧版iOS的Table视图中显示自定义单元格。如果你是其中之一,那么你将不得不面对一个问题,即你的按钮点击动作将不再适用于iOS7。

如何解决此问题:

你有三个选择:

选项1:创建新的新的表格单元格,而不是采取视图布局。并将所有布局再次放入表格单元格中。

我知道,这将需要大量effort.If你不希望这样做,我们有这方面的非常小的黑客:选项2

选项2:用于创建一个IBOutlet中你按钮并添加此按钮作为您的单元格内容视图的子视图。

[self.myCell.contentView addSubview:self.btn_click]; 

上述代码行将btn_click添加为您内容视图的子视图。现在按钮点击操作应该可以工作

选项3:

的最佳方式:

i)接受的出口的UITableViewCell。 ii)将现有视图作为新表格单元格的子视图。 iii)断开自定义单元与现有视图的连接并将其连接到新的UITableViewCell。

多数民众赞成它,你的IBAction现在将工作。

可能是你得到了崩溃带有错误消息“类不是关键值编码 - 兼容”。。检查您的旧视图连接并删除所有具有黄色标记的连接。

0

请确定您的UITableViewCell的TCell.xib是正确的。

仔细检查这个xib文件是否有“内容视图”。如果您看不到此项目,那意味着您的视图不是UITableViewCell,它可能是UIView

正确的方法是重新创建此XIB文件。你可以这样做:

  1. NewFile(用户界面)--->空--->设备系列(iphone)--->另存为TCell.xib。
  2. add UITableViewCell
  3. 将您的子视图从您之前的xib文件复制到此视图并连接插座。http://i.stack.imgur.com/WB4j3.png
0

当我面对这个问题时,我有大量来自xibs的细胞。这是这样,我已经创建的UITableViewCell

@implementation UITableViewCell (customs) 

- (void)awakeFromNib { 
    [super awakeFromNib]; 
    [self reAddSubviews]; 
} 

- (void)reAddSubviews { 
    for (UIView * o_vw in [[[self subviews] objectAtIndex:0] subviews]) { 
     if (o_vw != self.contentView) { 

      [o_vw removeFromSuperview]; 
      [self.contentView addSubview:o_vw]; 
     } 
    } 
} 

@end