每次我按下一个单元格,我希望单元格更改图像:
- (void)collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath
{
if ([[arrayOfImages objectAtIndex:indexPath.item] isEqual: @"dog.png"]) {
[arrayOfImages replaceObjectAtIndex:indexPath.item withObject:@"cat.png"];
} else if ([[arrayOfImages objectAtIndex:indexPath.item] isEqual: @"cat.png"]) {
[arrayOfImages replaceObjectAtIndex:indexPath.item withObject:@"lion.png"];
} else if ([[arrayOfImages objectAtIndex:indexPath.item] isEqual: @"lion.png"]) {
[arrayOfImages replaceObjectAtIndex:indexPath.item withObject:@"dog.png"];
}
[myCollectionView reloadData];
}
Run Code Online (Sandbox Code Playgroud)
我按下一个单元格,没有任何反应,现在如果我按下另一个单元格,前一个单元格会改变图像,同样的事情发生在我按下的每个单元格上.更改的图像始终是前一个单元格的图像.这就像它不会更新collectionView,因为我再次按下collectionView.
iphone didselectrowatindexpath reloaddata ios uicollectionview
我有一个带有单元格的UITableView,可以在选中时将viewControllers推送到堆栈.子视图控制器接受用户输入,然后弹出堆栈.
当弹出子viewController时,我希望父tableView更新所选单元格的值,然后取消选择该行.我可以使用reloadData更新单元格,我可以使用deselectRowAtIndexPath取消选择该行 - 但我不能同时执行这两个操作.
我理解为什么这是 - reloadData隐式取消选择单元格,deselectRowAtIndexPath明确地取消选择它,但我发现很奇怪我找不到任何想要实现相同重载/取消选择行为的人.我在这里错过了什么?
所有代码都在viewWillAppear:animated中 - 如果我在viewWillAppear中放置deselectRowAtIndexPath并在viewDidAppear中放入reloadData,我可以接近,但这不是我想要的.
你如何在UITableViewController中重载UITableView"reloadData"方法?
例如,在我的每个UITableView上调用reloadData时,都要显示/确认
我正在使用TBXML + HTTP从网站获取XML数据.我想要做的是用处理过的数据填充UITableView.我已经创建了一个包含所有条目的NSMutableArray,并且就此而言,一切正常.问题是,在成功从服务器获取数据并将其存储在数组中之后,我尝试使用更新表来显示数据reloadData.
用20行填充表大约需要5秒钟.奇怪的是,提取发生得非常快,因此数据可以立即获得.我不明白花了这么长时间.以下是日志中的一些信息:
2012-03-17 18:46:01.045 MakeMyApp[4571:207] numberOfSectionsInTableView: 1
2012-03-17 18:46:01.047 MakeMyApp[4571:207] numberOfRowsInSection: 0
2012-03-17 18:46:01.244 MakeMyApp[4571:1f03] numberOfSectionsInTableView: 1
2012-03-17 18:46:01.245 MakeMyApp[4571:1f03] numberOfRowsInSection: 20
2012-03-17 18:46:01.245 MakeMyApp[4571:1f03] Ok, I'm done. 20 objects in the array.
2012-03-17 18:46:01.246 MakeMyApp[4571:1f03] Finished XML processing.
2012-03-17 18:46:06.197 MakeMyApp[4571:1f03] cellForRowAtIndexPath:
Run Code Online (Sandbox Code Playgroud)
正如你所看到的那样,它会触发两次numberOfSectionsInTableView:/ numberOfRowsInSection:两次:第一次是视图加载时,第二种是当我加载时[self.tableView reloadData];
您可以看到,在不到一秒的时间内,数组将填充20个对象,并完成处理XML的所有工作.怎么在cellForRowAtIndexPath:5秒后被解雇?
以下是可能有助于发现问题的代码的一些部分:
- (void)createRequestFromXMLElement:(TBXMLElement *)element {
// Let's extract all the information of the request
int requestId = [[TBXML valueOfAttributeNamed:@"i" forElement:element] intValue];
TBXMLElement *descriptionElement …Run Code Online (Sandbox Code Playgroud) 每当用户重新进入我的iphone应用程序时,我一直在尝试重新加载表格.表格的所有信息都是正确和正确的.该表正在输入正确的数据源和委托,我打印的值是我想要的,但在视觉上表格不会在视觉上重新加载.我的调用在appWillEnterForeground中,并且调用viewWillLoad.
我有一个Xcode应用程序,它创建一个tableview,然后使用来自sqlite数据库的数据填充它,这非常有效,并允许我将数据推送到新视图并删除等,
此tableview是标签栏控制器上加载的第一个视图.当我移动到同一个控制器上的另一个视图,即创建一个运动员时,问题就出现了,在这个视图中我可以将新的运动员添加到数据库中(工作正常)但是当我回到标签栏控制器上的tableview时,表是一样的,我必须注销并重新登录才能看到表中的变化,
我在viewWillAppear函数中尝试了[self.tableView reloadData],但这没有做任何事情.我知道这个函数正在被调用,因为我已经将NSLog放在他们的内容中以便安心.
我已经找到了我认为可能是解决方案,但我无法让它工作!
viewWillAppear,viewDidAppear没有被调用,没有被触发
我将在下面发布我的代码和故事板的屏幕截图,因为我确信这是我设置控制器的不良方式导致了这个错误.任何帮助将非常感激,因为我现在处于崩溃阶段:D
-(void)viewWillAppear:(BOOL)animated {
//[super viewWillAppear:animated];
//[self.tabBarController viewWillAppear:animated];
[self.tableView reloadData];
NSLog(@"i just ran viewwillAppear");
}
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
athleteObject *athObj3 = [athletes objectAtIndex:indexPath.row];
athleteIdDelete = athObj3.athId;
[self openDatabase];
[self deleteAthleteFromDataBase];
[athletes removeObjectAtIndex:indexPath.row];
[tableView reloadData];
}
Run Code Online (Sandbox Code Playgroud)
reloadData在我的commitEditing函数中工作(当我通过滑动删除条目时,这会更新tableview)
任何帮助将不胜感激,il发布下面的屏幕截图.
(无法弄清楚如何加载屏幕截图)
我有一个表格视图,其中的单元格创建如下:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
cell.textLabel.text = @"TempTitle";
cell.textLabel.font = [UIFont fontWithName: @"AppleSDGothicNeo-Bold" size:16.0];
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
UILabel *numberLabel = [[UILabel alloc] init];
[numberLabel setFrame:CGRectMake(230.0, 5.0, 40.0, 30.0)];
[numberLabel setText:[NSString stringWithFormat:@"%@", [self.arrayOne objectAtIndex:indexPath.row]]];
UIButton *buttonDown = [[UIButton alloc] init];
[buttonDown setFrame:CGRectMake(190.0, 5.0, 40.0, 30.0)];
buttonDown.tag = indexPath.row;
[buttonDown addTarget:self action:@selector(quantityDown:) forControlEvents:UIControlEventTouchUpInside];
UIButton *buttonUp = [[UIButton alloc] init];
[buttonUp setFrame:CGRectMake(270.0, 5.0, 40.0, 30.0)];
[cell addSubview:buttonDown];
[cell addSubview:numberLabel];
[cell addSubview:buttonUp];
return cell;
}
Run Code Online (Sandbox Code Playgroud)
where …
我在TableView中使用了一些CoreData基础。
当我尝试清除其他视图中的那些基础时,我的控制台日志中有一条消息。
CoreData:错误:严重的应用程序错误。在调用-controllerDidChangeContent:期间,从NSFetchedResultsController的委托捕获了一个异常。
无效的更新:部分0中的行数无效。更新(0)之后,现有部分中包含的行数必须等于更新(3)之前该部分中包含的行数,再加上或减去该数字从该部分插入或删除的行数(已插入0,已删除0),加上或减去移入或移出该部分的行数(移入0,移出0)。与userInfo(空)
用于删除CoreData数组我使用此代码
self.historyArray.removeAll()
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let managedContext = appDelegate.managedObjectContext
let fetchRequest = NSFetchRequest(entityName: "History")
fetchRequest.returnsObjectsAsFaults = false
do {
let results = try managedContext.executeFetchRequest(fetchRequest)
for managedObject in results
{
let managedObjectData:NSManagedObject = managedObject as! NSManagedObject
managedContext.deleteObject(managedObjectData)
}
} catch {
print("Detele all data")
}
Run Code Online (Sandbox Code Playgroud)
我知道我需要重新加载TableView,但是如何在其他View中执行此操作?虐待尝试过此,但此代码不起作用。
var tableViewHistoryClass = HistoryView()
self.tableViewHistoryClass.tableView.reloadData()
Run Code Online (Sandbox Code Playgroud)
请帮助我修复此消息。
我有两个问题。
我想知道为什么我的集合视图无需调用即可自动加载数据imageCollectionView.reloadData()。
解决了。查看评论
为什么func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize不叫?我没有看到print("collectionViewLayout called")我正在尝试修改单元格的大小,因此单元格的高度等于集合视图的高度
解决了。查看评论
这是代码
class ProductInternalDetailVC: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate {
var selectedProduct: Product?
@IBOutlet weak var imageCollectionView: UICollectionView!
override func viewDidLoad() {
super.viewDidLoad()
imageCollectionView.delegate = self
imageCollectionView.dataSource = self
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 2
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath as …Run Code Online (Sandbox Code Playgroud) reloaddata ×10
ios ×7
uitableview ×7
iphone ×3
swift ×2
cocoa-touch ×1
core-data ×1
ipad ×1
objective-c ×1
sdk ×1
subview ×1
tableview ×1
tbxml ×1
xcode ×1