我有一个视图控制器,我已经删除了一个tableview。我还在tableview后面添加了一个UITextField。当我单击搜索按钮时,我希望tableview向下移动(显示文本字段)。我虽然通过使用以下内容弄明白了这一点:
self.tableView.frame.origin.y += 50
这有效,但是一旦我点击文本字段,它就会消失。我还提供了一个屏幕截图,我认为它可以帮助您了解我想要实现的目标。想要在Swift中做到这一点。一如既往,任何帮助都非常感谢!
答案 0 :(得分:1)
您可以将UITextField设置为UITableView的headerView,如下所示:
// set the tableHeaderView to be your UITextField
self.tableView.tableHeaderView = YOUR_TEXTFIELD
// set the offset so that the textField will be initially hidden
self.tableView.contentOffset = CGPointMake(0, YOUR_TEXTFIELD.frame.size.height)
// then in the IBAction of your search button, set the offset to be (0,0)
self.tableView.contentOffset = CGPointZero
其实你不需要在那里放一个按钮。向下滚动UITableView将在顶部显示headerView(也就是UITextField)。
BTW,对于你的情况,UISearchBar比UITextField更好。
<强>更新强>
希望您已阅读上述答案。我没有足够的声誉来评论,所以我只想更新我的答案。
根据您的评论(也许您应该将其添加到您的问题详情中,顺便说一下):
- (void)updateSearchResultsForSearchController:(UISearchController *)searchController
对于多个搜索字段,我有两种方法可以提出:
// strip out all the leading and trailing spaces
NSString *strippedString = [YOUR_SEARCHBAR_TEXT stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
// break up the search terms (separated by spaces)
NSArray *searchItems = nil;
if (strippedString.length > 0) {
searchItems = [strippedString componentsSeparatedByString:@" "];
}
答案 1 :(得分:0)
虽然如果我沿着UISearchBar路径走下去,这里的答案很有帮助,我真的需要显示一个自定义搜索字段。我通过以下方式实现了这一目标:
public partial class VT_Video
{
public int ID { get; set; }
public string title { get; set; }
public string description { get; set; }
public virtual ICollection<VT_VideoTag> VT_VideoTag { get; set; }
}
public partial class VT_VideoTag
{
public int ID { get; set; }
public int tagID { get; set; }
public int videoID { get; set; }
public virtual VT_Tag VT_Tag { get; set; }
public virtual VT_Video VT_Video { get; set; }
}
public partial class VT_Tag
{
public int ID { get; set; }
public string name { get; set; }
public virtual ICollection<VT_VideoTag> VT_VideoTag { get; set; }
}
感谢所有试图提供帮助的人!