我有一个大约20个单元格的UITableView,每个单元格中有三个UITextFields.我没有子类UITableViewCell,但在设置每个单元格时,我将textfields标记值设置为常量加上行号.因此,对于每一行,文本字段的标记都加1.
当我运行应用程序并在例如第一行中输入值时,它可能会重新出现在第12行.每次运行应用程序时行为都不一样.
我应该补充一点,我有一个数组存储在每个文本字段中输入的内容.编辑文本字段时,我将新值保存到数组中,当tableview再次请求单元格时,我将textfields值设置为存储在数组中的值.
这与重用UITableViewCells有关吗?重用单元格时,不同行中的文本字段是否可以获得相同的标记号?比如说第一个单元格(textfield tag = 1001)在第12行重用,然后我们有两个具有相同标签号的文本字段.如果我然后在第1行输入值并稍后加载第12行,则第1个单元格中的值将从数组中加载并放入第12行.
如果发生这种情况,我该如何解决?每个单元格都没有对文本字段的引用,所以我不认为我可以通过访问它所在的单元格来编辑文本字段的标记值.
编辑:
以下是UITableView的代码:cellForRowAtIndexPath:
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
//Modify cell, adding textfield with row-unique index value
cell = [self modifyCellForHoleInfo:cell atIndexPath:indexPath];
}
cell.accessoryType = UITableViewCellAccessoryNone;
// Load value for textfield stored in dataArray
((UITextField *)[cell viewWithTag:1000+indexPath.row]).text = [dataArray objectAtIndex:indexPath.row];
Run Code Online (Sandbox Code Playgroud)
谢谢!
我有一个简单的问题.
我有一个显示UITableView的普通UITableViewController.当用户点击我的应用程序右上角的按钮时,我希望TableView从右向左翻转,然后显示一个新的UIView.我找到了动画UIViewAnimationTransitionFlipFromRight,它翻转当前视图并用新视图替换它.但是,动画涉及从超级视图中删除当前视图,然后将新视图添加到同一个超级视图.问题是当我尝试在我的UITableViewController类中执行此操作时,我只有一个视图 - UITableView - 我需要删除它.当UITableView被删除后,我没有剩下的视图来添加我的新视图,并且屏幕变为空白.
我解决这个问题的想法是创建一个UIView并将UITableView放在该视图中.我想在动画中从UIView中删除UITableView,然后将我的新视图添加到同一个UIView中.初始化时有类似的东西:
superViewTest = [[UIView alloc] initWithFrame:self.tableView.frame];
[superViewTest addSubview:self.tableView];
Run Code Online (Sandbox Code Playgroud)
然后在动画翻转时像这样:
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.view cache:YES];
[self.tableView removeFromSuperview];
[superViewTest addSubview:self.mapView];
Run Code Online (Sandbox Code Playgroud)
或者UITableViewController中的UITableView是否已经具有我不知道的超视图?
我希望我能更好地解释这一点,提前谢谢!
我有一个包含整数的大向量(长度:230 400,int8),我重新排列成一个三维矩阵(行数:240,列数:320,深度:3).完成此操作后,新矩阵包含双精度而不是整数(根据Matlab工作空间).
整个操作需要0.3秒,这对我的目的来说很长.
在将它们放入矩阵之前,Matlab是否将数组中的int转换为双精度?可以避免加速吗?
一些代码:
tic;
A=zeros(240,320,3);
%A is matrix, B is vector.
for i=1:240
for j=1:320
A(i,j,:)=B(1+(j-1)*3+(i-1)*320*3:3+(j-1)*3+(i-1)*320*3);
end
end
toc;
Run Code Online (Sandbox Code Playgroud)
谢谢!
我是C++的新手,对内存管理有疑问.
在标题中,我有这个:
std::vector<Obstacle::Obstacle*> obstacles;
Run Code Online (Sandbox Code Playgroud)
在.cpp我这样做:
Circle *circle = new Circle(x, y, radius);
obstacles.push_back(circle);
Run Code Online (Sandbox Code Playgroud)
where Circle是的子类Obstacle.
我的问题是我什么时候应该调用delete向量中的元素?我听说每个人new应该平衡一个delete.我是否需要在析构函数循环中通过向量并调用delete每个元素?是不是有更优雅的方式?
谢谢