UISearchBarを.xibファイルのツールバーに配置しようとしています。検索バーをツールバーにドラッグアンドドロップできますが、次のエラーが表示されます。
ControllerName.xib:error: illegal Configuration: UISearchBar embedded in UIBarButtonItems (Only available ub iPad documents).
UISearchBarをxibのツールバーに含める方法を教えてください。
UISearchBarを.xibファイルのツールバーに配置しようとしています。検索バーをツールバーにドラッグアンドドロップできますが、次のエラーが表示されます。
ControllerName.xib:error: illegal Configuration: UISearchBar embedded in UIBarButtonItems (Only available ub iPad documents).
UISearchBarをxibのツールバーに含める方法を教えてください。
私の知る限り、開発にIPADを使用していない限り、IPHONEに直接追加することはできません。まず、 UISearchBarをcustomViewに追加してから、プログラムでツールバーに追加する必要があります。UISearchBar
UIToolBar
// your searchbar
UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(xposition, yposition, width, height)];
//create a customview and make its frame equal to your searchbar
UIView *searchBarView = [[UIView alloc] initWithFrame:searchBar.frame];
// add your searchbar to the custom view
[searchBarView addSubview:searchBar];
//finally add it to your bar item of the toolbar
UIBarButtonItem *searchBarItem =
[[UIBarButtonItem alloc] initWithCustomView:searchBarView];
Apple がXcode 8.2でこれを修正したので、この Interface Builder を実行できるようになりました。iOS 8.0より前のiOSではポップオーバーが許可されておらず、ツールバーの検索バーはポップオーバーがほとんどの場合使用されることを意味していたため、以前は無効にしたと思います。しかし、彼らは iOS 8.0 でそれを無効にするのを忘れていました。
プログラムによって:
UIToolbar *Toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
[Toolbar sizeToFit];
UISearchBar *testbar = [[UISearchBar alloc] initWithFrame:CGRectMake(0,2,250,38)];
NSMutableArray *barItems = [[NSMutableArray alloc] init];
UIBarButtonItem *flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
[barItems addObject:flexSpace];
UIBarButtonItem *btnCancel = [[UIBarButtonItem alloc] initWithTitle:@"Button" style:UIBarButtonItemStyleBordered target:self action:@selector(ButtonMethod)];
[barItems addObject:btnCancel];
[Toolbar setItems:barItems animated:YES];
[Toolbar addSubview:testbar];
[self.view addSubview:Toolbar];
これがボタンメソッドです。
-(void)ButtonMethod
{
// Write Code for ButtonMethod Method
}