繁体   English   中英

iOS7和iOS6中的“取消”按钮

[英]Cancel button in iOS7 and iOS6

我一直在努力在iOS7中的“取消”按钮上更改文本。

在iOS6中,我没有问题-文本已更改。 但是在iOS7中它没有任何作用,我坚持使用“取消”。

但是最后我找到了下面的代码,该代码更改了iOS7中的默认“取消”文本。

现在的问题是,在iOS6中运行时,打开搜索栏时应用崩溃。

有人知道为什么以及如何解决此问题以使其在iOS7和iOS6上都能正常工作吗? 这是错误消息。

2013-11-10 16:58:38.048 Testapp [45017:907]-[__ NSCFConstantString setTitle:forState:]:无法识别的选择器已发送到实例0x11dfc 2013-11-10 16:58:38.050 Testapp [45017:907] *正在终止应用由于未捕获的异常“ NSInvalidArgumentException”,原因:“-[__ NSCFConstantString setTitle:forState:]:无法识别的选择器已发送到实例0x11dfc”

和main.m

int retVal = UIApplicationMain(argc,argv,nil,nil);

得到一个线程1:signal SIGABRT

代码如下。

-(void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller{
    self.searchDisplayController.searchBar.showsCancelButton = YES;
    UIButton *cancelButton;
    UIView *topView = self.searchDisplayController.searchBar.subviews[0];
    for (UIView *subView in topView.subviews) {
        if ([subView isKindOfClass:NSClassFromString(@"UINavigationButton")]) {
            cancelButton = (UIButton*)subView;
        }
  }
    if (cancelButton) {
                [cancelButton setTitle:@"Testing" forState:UIControlStateNormal];
    }
}

苹果在IOS7中将searchBar子视图包装到另一个视图中。 这是在两个IOS版本上如何更改标题的伪代码:

if ( iosVersion < IOS7) {
    subViews = self.searchBar.subviews;
} else {
    subViews = [(self.searchBar.subviews[0]) subviews];
}

for (id view in subViews) {
    if ([view isKindOfClass:[UIButton class]]) {
        UIButton* cancelbutton = (UIButton* )view;
        [cancelbutton setTitle:@"NewTitle" forState:UIControlStateNormal];
        break;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM