Tag: nsindexpath

重新排列UIImagearrays中的元素

我有一个NSURL数组的数组,我能够使用函数removeAtIndex和insert 。 我知道fromIndexPath和toIndexPath ,这个方法可以帮助我使用这个Delegate方法完成[[NSURL]]的相同工作(查看下面的var data ): func moveDataItem(fromIndexPath : NSIndexPath, toIndexPath: NSIndexPath) { let name = self.data[fromIndexPath.section][fromIndexPath.item] self.data[fromIndexPath.section].removeAtIndex(fromIndexPath.item) self.data[toIndexPath.section].insert(name, atIndex: toIndexPath.item) // do same for UIImage array } 不过,我有一个UIImage的数组与运行3个空元素。 var newImages = [UIImage?]() viewDidLoad() { newImages.append(nil) newImages.append(nil) newImages.append(nil) } 我的问题是如何使用moveDataItem()的newImages数组,以及data并能够运行该行重新排列UIImagearrays的顺序。 我试过这些,但不幸的是我无法让他们工作.. self.newImages[fromIndexPath.section].removeAtIndex(fromIndexPath.item) // and self.newImages[fromIndexPath.row].removeAtIndex(fromIndexPath.item) 为了澄清,数据数组看起来像这样 lazy var data : [[NSURL]] = { var array […]

如何从segue传递indexPath到目标视图?

我有一个自定义布局collectionView的页脚中的两个button。 我想在用户点击button时将footerView的indexPath传递给destinationView类。 我以我以前成功的典型方式编写我的代码。 但是,由于某种原因,只要我点击button,就会崩溃。 我尝试了不同的方法来完成这项工作,但都没有成功。 我已经将destinationView的类设置为故事板中的正确的类。 请有人帮助我。 任何帮助代码示例将非常赞赏,因为英语不是我的第一语言。 谢谢。 这是我的代码 // perform segue passing indexPath information – (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // approach 1 : pass dictionary if([[segue identifier] isEqualToString:@"SeeAllPictures"]) { Footer *footerView = (Footer *)((UIButton *)sender).superview; // debug code : working well NSLog(@"perform segue from indexpath {%ld – %ld}", (long) footerView.indexPath.section, (long) footerView.indexPath.row); SeeAllPicture […]

search后表格视图buttonselect错误

我在UITableViewCell有一个UIButton 。 当一个UIButton被轻敲,我正在保存在数组中点击的button标签。 所以当我使用UISearchController在UITableViewsearch时,我得到了所需的输出,但是在错误的单元格中select了所选的button。 图1 – selectbutton并在search之前 图片2 – search结束后 在图片1中,我select了属于“房间1”的button,但在search之后,如图2所示,输出是正确的,但不应该selectbutton。 如何解决这个问题? —-编辑—-实施 -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { if (shouldShowSearchresult) { return searchArray.count; } else { return roomNameArray.count; } } -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *cellIdentifier = @"roomCells"; cell = (roomTableViewCell *)[tableView dequeueReusableCellWithIdentifier:cellIdentifier]; if (shouldShowSearchresult) { cell.roomName.text […]

如何从页脚内的button传递indexPath继续?

我正在做一个自定义布局collectionView,它有被子看,每个部分都有一个页脚。 两个button是在页脚内,每个button都有一个segue到另一个视图(我使用IB设置segues)。 页脚有它自己的indexPath在UICollectionViewFlowLayout类(我在哪里做了一个自定义的布局)分配。 footer的indexPath是这样的 – {section – row} {0-0} {1-0} {2-0} …. 我想保持这个indexPath信息在另一个链接到两个button的视图使用。 我试过“convertPoint:toView:… indexPathForRowAtPoint”的方式,但没有奏效。 我认为这是因为button不属于collectionViewItem,但属于页脚。 在这种情况下,传递每个footerView的indexPath的最好方法是什么? 代码示例的任何解决scheme将不胜感激。 // CollectionView DataSource – (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath { Footer *footerview = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:@"Footer" forIndexPath:indexPath]; // set button images and labels [footerview setButton]; // debug code : show current section number footerview.footerLabel.text = […]

传递自我参数:@selector

我想添加一个NSIndexpath作为参数通过 [self action:@selector(showDetailedImage)]; 是否可以添加一个额外的参数( NSIndexPath )到这个方法?

tableView:cellForRowAtIndexPath删除项目后用nil indexPath调用

我有一个UITableViewpipe理的相当香草的UITableView来显示给定的核心数据实体的所有实例。 当用户通过滑动删除表视图中的一个条目时, tableView:cellForRowAtIndexPath:最终会在我的UITableViewController用一个nil indexPath 。 由于我没有预料到它将被调用一个nil indexPath ,应用程序崩溃。 我可以通过检查nil值来解决崩溃问题,然后返回一个空单元格。 这似乎有效,但我仍然担心我可能处理了错误的事情。 有任何想法吗? 有没有人见过tableView:cellForRowAtIndexPath:用nil indexPath ? 请注意,这只有当用户通过滑过单元格从表视图中删除时才会发生。 使用表格视图编辑模式删除项目时,不会发生。 删除单元格的两种方法会有什么不同? 那么,在表视图委托方法中获得一个nil indexPath真的是一个好的情况吗? 我的视图控制器代码是非常标准的。 这里是删除: – (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { if (editingStyle == UITableViewCellEditingStyleDelete) { // Delete the row from the data source NSManagedObject *managedObject = [self.fetchedResultsController objectAtIndexPath:indexPath]; [self.moc deleteObject:managedObject]; NSError *error = NULL; Boolean success = […]

从Swift中的UITableViewCell子类中获取IndexPath

我有一个自定义的UITableViewCell子类及其关联的xib。 我在这个单元格中有一个UILabel和一个UIButton ,我已经把button的内部动作连接到子类。 我需要的是当单元格中的button被点击时,获取具有该button的单元格的索引path。 也许可以通过代理或其他东西发回给视图控制器。 由于我在UITableViewCell子类中,所以我不能使用这样的解决scheme,因为我没有从单元格子类内引用tableview。 经过进一步的调查,我发现了另一个解决scheme,我在这样的Swift中实现。 import UIKit class ContactCell: UITableViewCell { @IBOutlet weak var nameLabel: UILabel! override func awakeFromNib() { super.awakeFromNib() // Initialization code selectionStyle = .None } @IBAction func callButtonPressed(sender: UIButton) { let indexPath = (self.superview as UITableView).indexPathForCell(self) println("indexPath?.row") } } 但是,当我点击button,它崩溃了一个错误消息说Swiftdynamic投射失败 。 任何想法我的代码有什么问题? 或者我愿意接受任何其他的build议,以便让我以任何其他方式达到预期的结果。 谢谢。

indexpath.row从1开始,而不是从0开始

我正面临着一个可视化的问题。 有时候当我的表的数据源/数字有3个值时,cellforowatindexpath从0-1开始,而不是从0-0开始。 有人能帮我找出这个问题发生的可能原因。 甚至尝试打印日志,但日志显示为0 -1和0 -2,但不显示0 -0。 这意味着它没有被调用的第一行,即0 -0。

UITableView的声明失败selectRowAtIndexPath

我觉得这是一个需要特别注意的问题…我的Google-fu很不错,但是我一直没能得到任何有用的东西。 这是最简单的事情,但我似乎无法弄清楚问题所在。 我有一个UITableView。 这是我的VC调用_form的子视图。 我用它来造型,而不是真正的显示数据。 它有2个单元格。 在某个事件上,我试图select一个不同的单元格,使用selectRowAtIndexPath:animated:scrollPosition。 当我这样做的时候,它是SIGABRTS。 一个简单的例子: – (IBAction)submitClicked:(id)sender { [_submit setTitle:@"Wha!?" forState:UIControlStateNormal]; NSIndexPath *row = [NSIndexPath indexPathWithIndex:0]; NSLog(@"%d", [[_form indexPathForSelectedRow] row]); [_form selectRowAtIndexPath:row animated:YES scrollPosition:YES]; } button的标题被​​改变,并且表格打印所选的行是0或1,但在试图select所需的单元时,它打破: 2012-03-09 21:57:39.905 <omitted>[16329:207] 0 2012-03-09 21:57:39.908 <omitted>[16329:207] *** Assertion failure in -[NSIndexPath row], /SourceCache/UIKit_Sim/UIKit-1912.3/UITableViewSupport.m:2598 (gdb) 我的假设是,这意味着如何configuration我的表有什么问题,但我不知道是什么。 通常在表格中select单元格(单击它)正在工作,如我的tableView:didSelectRowAtIndexPath中预期的响应所示。 除此之外,其他一切工作都正常。 (另外,我其他人回答额外的debugging信息,不只是“(gdb)”,我怎么能得到这个?) 谢谢!

UICollectionView indexPathsForVisibleItems不更新新的可见单元格

我有一个ViewView里面有一个CollectionView。 加载视图时,可见单元格(9个单元格)正确显示。 当我向下滚动时,我想通过调用indexPathsForVisibleItems for partnerCollectionView在loadImagesForOnscreenRows中加载collectionView中的可见项。 但是,当loadImagesForOnscreenRows indexPathsForVisibleItems总是前9个单元格,即使单元格10到18应该在屏幕上可见。 我使用的代码是: #import "PartnerListViewController.h" #import "AppDelegate.h" #import "Partner.h" #import "ImageLoader.h" #import "PartnerDetailViewController.h" @interface PartnerListViewController () @end @implementation PartnerListViewController @synthesize lblTitle; @synthesize partnerCollectionView; @synthesize imageDownloadsInProgress; @synthesize fetchedResultsController; @synthesize managedObjectContext; – (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. AppDelegate * appDelegate = (AppDelegate *) [[UIApplication […]