小编Izz*_*npo的帖子

UISearchBar出现在UITableView的*bottom*

希望有人知道该怎么做,这让我疯了!

我在现有应用程序中有一个非常简单的UITableViewController,我使用界面构建器添加了一个UISearchBar(拖放)

注意:在iOS 6或iOS 7中进行测试时存在此问题

我的问题是,当运行应用程序时,搜索栏会显示在结果的BOTTOM上

在此输入图像描述

当我点击搜索区域进行搜索时,搜索栏会轻弹到页面顶部

在此输入图像描述

起初我认为"这是我",所以我完全删除了控制器,包括所有代码,并从头开始重建页面,以避免我可能犯的任何错误.不幸的是有相同的结果

IB中的结构是:

结构体

控制器代码只是在一分钟就完成了基本操作 cellForRowAtIndexPath

objective-c uitableview uisearchbar ios

11
推荐指数
1
解决办法
1838
查看次数

如何在segue期间从视图控制器引用tableView

我是iOS开发的新手,所以请放轻松我吧:)

使用适用于iOS 5的Xcode 4.2,我在IB中构建了一个视图控制器,其中的tableview通过push segue链接到详细视图控制器(在表视图单元级别)

我想根据所选单元格的索引,使用我的数据源中的数据设置详细页面标签.最初我编写"didSelectRowAtIndexPath"只是为了发现在segue处理之后调用它,并发现我需要调用prepareForSegue而不是

我的问题是,无论我尝试什么,因为tableView不是prepareForSegue的传递参数(与我迄今为止使用的大多数其他方法不同),我很难在视图控制器中访问tableView以便调用indexPath方法,这样我可以引用我的数据源

我已经看到很多使用self的例子,如下所示,但是这会导致一个错误,指出viewView在视图控制器中不存在

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

  NSIndexPath *selectedIndexPath = [self.tableView indexPathForSelectedRow];
  DetailViewController *detail = [segue destinationViewController];
  detail.primary = [datasource objectAtIndex:selectedIndexPath.row];
  detail.seconday = [datalist objectForKey:detail.primary];
}
Run Code Online (Sandbox Code Playgroud)

我也试过用

ViewController *main = [segue viewController];
Run Code Online (Sandbox Code Playgroud)

而不是使用自我,但这导致相同的问题

我知道我可以将示例重写为Table View Controller,但是想知道这是否可能?正如我所见,人们在开发中使用这两种方法

作为参考,我正在学习本教程... http://kurrytran.blogspot.com/2011/10/ios-5-storyboard-and.html

当我到达完成详细信息页面的部分时,我想,为什么不使用segue将表格视图单元格链接到详细信息页面,并在显示详细信息页面之前编写状态和资本的复制代码.从本教程中可以看出,主控制器是一个视图控制器

我的理解是,如果需要在以后开发更复杂的东西,不使用UITableViewController会给任何应用程序更大的灵活性

希望你可以帮忙,Izzy

uiviewcontroller tableview ios5

9
推荐指数
1
解决办法
2万
查看次数

从textFieldDidEndEditing调用reloadData后,对UITableView的indexPath不正确

因此,我正在尝试模拟管理电话号码时标准Apple代码在联系人应用上的工作方式.具体来说,我正在努力从tableview中删除一行,如果它是空的并且用户导航到任何其他行

我的问题是,当tableview重新加载导致UITextField重新签名其响应者时,我需要再次为用户导航到的文本字段设置响应者

我有UITextField委托,我正常处理 textFieldShouldBeginEditing , textFieldDidBeginEditing , textFieldShouldEndEditing , textFieldDidEndEditing

为了处理这个功能,我的代码就在textFieldDidEndEditing其中,我从tableview数组中删除了数据,并且由于tableview有2个部分,我正在调用:

[MyTableView reloadSections:[NSIndexSet indexSetWithIndex:1] withRowAnimation:UITableViewRowAnimationNone];
Run Code Online (Sandbox Code Playgroud)

textFieldDidBeginEditing我使用以下命令保存正在编辑的textField的indexPath 期间:

EditableCustomCell *textFieldCell = (EditableCustomCell *)[[textField superview] superview];
NSIndexPath *indexPath = [MyTableView indexPathForCell:(EditableCustomCell *)textFieldCell];
responderIndexPath = [NSIndexPath indexPathForRow:indexPath.row inSection:indexPath.section];
Run Code Online (Sandbox Code Playgroud)

然后我使用以下代码将正确的行textField设置为第一个响应者:

EditableCustomCell *customCell = (EditableCustomCell *)[MyTableView cellForRowAtIndexPath:responderIndexPath];
[customCell.editableTextField becomeFirstResponder];
Run Code Online (Sandbox Code Playgroud)

一切似乎都很好,直到接近处理结束时,突然textFieldDidBeginEditing开始返回第0行第0行的indexPath(即使在检查标记值或包含的文本时返回文本字段的正确值)

以下是上述过程开始时的日志:

- textFieldDidEndEditing started  <-- start of delete processing
- textFieldDidEndEditing - tableviewData - replacing object at index 1
    CustomTableViewController.deleteRow - delete called for indexPath section 1 ... row …
Run Code Online (Sandbox Code Playgroud)

objective-c uitableview uitextfield nsindexpath becomefirstresponder

0
推荐指数
1
解决办法
1234
查看次数