Невозможно получить UISearchController в моей панели навигации программно

Ответ daniel.gindi выше сделал трюк для меня! (+1 daniel) Тем не менее, мне пришлось внести небольшие корректировки - измените размер shadowFrame таким же, как размер кадра в представлении, и включите взаимодействие с пользователем. Вот обновленный код:

+ (UIView*)putView:(UIView*)view insideShadowWithColor:(UIColor*)color andRadius:(CGFloat)shadowRadius andOffset:(CGSize)shadowOffset andOpacity:(CGFloat)shadowOpacity
{
    CGRect shadowFrame; // Modify this if needed

    // Modified this line
    shadowFrame.size = CGSizeMake(view.frame.size.width, view.frame.size.height);

    shadowFrame.origin.x = 0.f;
    shadowFrame.origin.y = 0.f;
    UIView * shadow = [[UIView alloc] initWithFrame:shadowFrame];

    // Modified this line
    shadow.userInteractionEnabled = YES;
    shadow.layer.shadowColor = color.CGColor;
    shadow.layer.shadowOffset = shadowOffset;
    shadow.layer.shadowRadius = shadowRadius;
    shadow.layer.masksToBounds = NO;
    shadow.clipsToBounds = NO;
    shadow.layer.shadowOpacity = shadowOpacity;

    [shadow addSubview:view];
    return shadow;
}

Я хотел бы добавить, что в моем случае я пытался добавить это в контроллер сторонних представлений, т. Е. У меня не было прямого контроля над кодом. Итак, вот как я использовал функцию выше:

UIView *shadow = [self putView:vc.view 
         insideShadowWithColor:[UIColor blackColor]
                     andRadius:5.0 
                     andOffset:CGSizeMake(0.0, 0.0) 
                    andOpacity:1.0];
vc.view = shadow;
vc.view.layer.cornerRadius = 5.0;
vc.view.layer.masksToBounds = YES;
0
задан rmaddy 17 January 2019 в 16:32
поделиться

2 ответа

Добавьте переменную UISearchController

var searchController : UISearchController!

и amp; затем добавьте код в viewDidLoad

    searchController = UISearchController(searchResultsController: nil)
    searchController.delegate = self
    searchController.searchResultsUpdater = self
    searchController.dimsBackgroundDuringPresentation = false // displays tableview

    let scb = self.searchController.searchBar
    scb.tintColor = UIColor.white
    scb.placeholder = "SEARCH"
    scb.barTintColor = UIColor.white

    if let textfield = scb.value(forKey: "searchField") as? UITextField {
        textfield.textColor = UIColor.greenColor
        if let backgroundview = textfield.subviews.first {
            backgroundview.backgroundColor = UIColor.white
            backgroundview.layer.cornerRadius = 10
            backgroundview.clipsToBounds = true
        }
    }

    if #available(iOS 11.0, *) {
        navigationItem.searchController = searchController
        navigationItem.hidesSearchBarWhenScrolling = false
    } else {
        self.tableView.tableHeaderView = searchController.searchBar
        searchController.searchBar.tintColor = UIColor.greenColor
        searchController.searchBar.barTintColor = UIColor.greenColor
    }
    definesPresentationContext = true
0
ответ дан Dimple 17 January 2019 в 16:32
поделиться

UITabbarController не имеет UINavigationController, поэтому он не имеет UINavigationBar.

Так что вы можете сделать:

  • Добавить ячейку в TableView, чтобы она действовала как панель поиска
  • Добавить панель навигации в ViewController
  • Добавить пользовательский Вид для вашего вида, чтобы действовать как контейнер

Могут быть и другие варианты, просто хочу указать вам правильное направление.

0
ответ дан Tomte 17 January 2019 в 16:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: