目的: 検索バーのテキストフィールドに右側のビューをラベルとして設定したい
同じことを行うためにios 6で正常に動作する次のコード:
UISearchBar *search = [[UISearchBar alloc] init];
[search setTintColor:[UIColor grayColor]];
search.frame = CGRectMake(0, 150, 320,50);
search.delegate = self;
UITextField *searchField=[search.subviews objectAtIndex:1];//Changed this line in ios 7
searchField.backgroundColor=[UIColor redColor];
UILabel *label=[[UILabel alloc] initWithFrame:CGRectMake(0, 0, 40, 40)];
label.text=@"Hello";
label.textColor=[UIColor greenColor];
searchField.rightView = label;
searchField.rightViewMode = UITextFieldViewModeAlways;
[self addSubView:search];
iOS 7 で同じコードを実行すると (xcode 7.0.2 が完全に更新された状態で)、エラーが発生しました。
上記のコードのコメント行を次のように置き換えます。
UITextField *searchField=[((UIView *)[search.subviews objectAtIndex:0]).subviews lastObject];
これを行った後、エラーは発生しません(テキストフィールドの説明を出力してログを確認し、すべて正常に機能しています)、実行するとテキストフィールドに赤い背景が表示されますが、rightViewのラベルは表示されません私に。さて、このライトビューを表示する方法を誰か助けてくれませんか。