Tag: uitableview

Objective C自定义惰性加载图像UITableView Cell

第一次加载远程图像到iPhone应用程序,并希望有一些帮助优化过程。 我目前所做的是获取图像,如果它不存在,并caching它。 主要目标是: 只在需要的时候加载图片。 保存图像供将来使用以减less数据消耗,并且允许用户在没有连接到互联网时具有有些function的应用程序。 我只是觉得我做得不够好。 下面是tableView中的一段代码:cellForRowAtIndexPath: MVImageCell * cell = (MVImageCell *)[tableView dequeueReusableCellWithIdentifier:@"PicsAndVideosCell"]; // empty cell cell.imageView.image = nil; cell.textLabel.text = nil; cell.detailTextLabel.text = nil; // set cell properties cell.textLabel.lineBreakMode = UILineBreakModeWordWrap; cell.textLabel.numberOfLines = 2; cell.imageView.contentMode = UIViewContentModeScaleAspectFit; cell.imageView.frame = CGRectMake(15, 6, 58, 58); cell.imageView.layer.cornerRadius = 6; cell.imageView.layer.masksToBounds = YES; Photoset * sfc = […]

使用swift iOS8通过代码将约束设置到Storyboard中的元素

我有一个ViewView的一个ViewController。 我已经在故事板中设置了它。 有没有办法以编程方式设置tableView的约束? 我试图在ViewController中从我的tableView中设置一个IBOutlet,并添加约束条件。 但是这没有用。 这是我的ViewController import UIKit class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { @IBOutlet weak var tableView: UITableView! override func viewDidLoad() { super.viewDidLoad() addTableViewConstraints() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } func addTableViewConstraints() { tableView.setTranslatesAutoresizingMaskIntoConstraints(false) var topConstraint = NSLayoutConstraint(item: self.tableView, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: […]

当以编程方式设置提示时,UINavigationBar与UITableView重叠

我有一个包含UITableViewController的UINavigationController 。 这个导航控制器将周围的其他UITableViewControllers,最终这些表视图控制器将有一个提示。 问题是,当我以编程方式设置此提示时,它将与其下方的表视图的内容重叠。 (search栏正在被导航栏隐藏) 我正在四处寻找,并find了答案 。 我在受影响的视图控制器中以两种不同的方式尝试了这个build议,但没有任何改变: override func viewDidLoad() { super.viewDidLoad() self.edgesForExtendedLayout = .None; self.extendedLayoutIncludesOpaqueBars = false; self.navigationItem.title = NSLocalizedString("Add Anime or Manga", comment: "") self.navigationItem.prompt = NSLocalizedString("Search media belonging to this series.", comment: "") } – override func viewDidLoad() { super.viewDidLoad() self.navigationItem.title = NSLocalizedString("Add Anime or Manga", comment: "") self.navigationItem.prompt = NSLocalizedString("Search […]

如何访问自定义TableViewCell中的button的索引path?

我创build了一个自定义的TableViewCell并在单元格中放置了一个button。 当按下button时,在tableviewcell.swift文件中, IBAction func被执行。 我不知道如何确定button所在的单元格的索引path。 我正在尝试使用以下内容 @IBAction func employeeAtLunch(sender: AnyObject) { let indexPath = (self.superview as! UITableView).indexPathForCell(self) println("indexPath?.row") } 但我得到以下错误点击: Could not cast value of type 'UITableViewWrapperView' to 'UITableView' 任何帮助如何访问单元格的索引path?

如何以编程方式触发UITableViewCell editActions?

我在我的tableviewcell上做了一些自定义的编辑操作。 当我滑动时,它工作正常,但我想知道是否有任何方法来触发这些行动,当我点击细胞。 另外,我看到很多人只是回答类似的问题, tableView.setEditing(true, animated: true) 虽然这不是我正在寻找的解决scheme。 我希望在没有按下另一个button的情况下立即显示操作。 谢谢。

为什么UIRefreshControl跳跃?

我尝试用swift 1.2来使用UIRefreshControl,除了用户界面以外,还能正常工作。 这是跳,我不知道为什么。 这是我在做什么: class ViewController: UIViewController { var refreshControl:UIRefreshControl! @IBOutlet weak var tableView: UITableView! override func viewDidLoad() { super.viewDidLoad() self.refreshControl = UIRefreshControl() self.refreshControl.attributedTitle = NSAttributedString(string: "Pull to refresh") self.refreshControl.addTarget(self, action: "refresh:", forControlEvents: UIControlEvents.ValueChanged) self.tableView.addSubview(refreshControl) } func refresh(sender:AnyObject) { // Code to refresh table view } } 你可以从这里下载我的POC项目 : POC项目 当你拉下tableView时,突然跳了一下。 有没有人知道为什么? 如果我使用UITableViewController,它工作正常,但我不想使用此UI对象。 我想在UIViewController中使用一个简单的UITableView。

日本的UILocalizedIndexedCollat​​ion给联系人/音乐应用程序提供不同的顺序

UILocalizedIndexedCollat​​ion似乎在日语iOS设备上返回的结果与联系人/音乐应用程序中内置的结果不同。 请注意,这不是关于日语在索引中根本不显示的常见问题。 我收到日文假名部分,但索引的顺序与联系人等相比是不正确的。 下面是屏幕左侧的音乐应用程序中显示的预期结果,首先是假名 – 在右侧,我得到的结果是: UILocalizedIndexedCollat​​ion似乎没有任何明显的方式来configuration它,所以我不知道什么预期的方式来调整sorting是,很多谷歌是不透露任何答案(虽然我也不是唯一的有这个问题的人)。 任何正确的方向指针将不胜感激。

UITableView被UITabBar部分隐藏

我有一个包含UINavigationController的UITabBarController 。 在可见的UIViewController ,我正在编程创build一个UITableView ,如下所示: self.voucherTableView = [[UITableView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame] style:UITableViewStylePlain]; self.voucherTableView.autoresizingMask = UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth; 但是,UITabBar与UITableView重叠。 当我输出[[UIScreen mainScreen] applicationFrame]的高度时,它返回460.00,而它应该是367.00。 在界面生成器中,我使用“模拟度量标准”自动将视图的高度设置为367.00。 有什么我失踪,无论我尝试什么,我不能看到我需要的367.00高度。 作为一个临时解决scheme,我已经手动设置了UITableView的框架,这不是很理想,所以最好解决这个问题: self.voucherTableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 367) style:UITableViewStylePlain];

UITableViewCell框架高度不匹配tableView:heightForRowAtIndexPath:

我构build了一个可变高度自定义表单元的UITableView,它们的高度由包含的多行UILabel的大小决定。 我已经得到了tableView:heightForRowAtIndexPath:委托方法连接起来,并使用sizeWithFont:constrainedToSize:正确计算最终的高度。 我遇到了一个奇怪的问题:在数据源方法tableView:cellForRowAtIndexPath:被调用的时候,正确的每行高度已经被确定,如上所述,但单元格的框架不匹配那个高度。 相反,单元格的frame.size.height属性是表视图的默认单元高度( frame.size.height ,因为我已经在Interface Builder中设置了它,正确的高度,当包含的UILabel只有一行文本),而不是高度tableView:heightForRowAtIndexPath:确定正确的索引path。 我在cellForRowAtIndexPath:生成单元格cellForRowAtIndexPath:使用出列,也就是说, // Using storyboards, this never returns nil, no need to check for it CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:@"SomeIdentifier"]; NSLog(@"%f", cell.frame.size.height); // 86, not correct if the cell contains a multi-line UILabel 那么,无论iOS在幕后做什么,出列都不会将单元格的框架属性设置为与计算出的高度相匹配。 这本身并不令人惊讶,它将细胞本身排除在外,而不是它们的几何形状。 虽然单元格的渲染是正确的,所以height属性被设置在某个地方 ,但是它发生在cellForRowAtIndexPath:之后。 所以:当我最初填充表视图时, cell.frame.size.height是所有单元格的86,因为它们是我第一次向下滚动列表时出现的。 由于在第一个cellForRowAtIndexPath:之后的某个时间设置了正确的几何cellForRowAtIndexPath:在显示每一行之前,当向后滚动时,对于重新使用后重新回到视图中的每个单元格,height属性都是正确的。 在此之后,我可以随意滚动表格视图,高度属性保持正确的每个细胞从这一点上。 在任何基于出队的重用发生之前,第一次获得正确的单元高度的正确方法是什么? 我需要这个来重新定位表格单元格的子视图。 我是否需要手动调用heightForRowAtIndexPath:在cellForRowAtIndexPath:然后手动设置新创build的CustomCell实例的框架以匹配那个高度? 这似乎是多余的,我需要创build一个机制来检测何时第一次创build了具有错误框架高度的单元格,以及是否稍后使用正确的框架高度出列以避免冗余。 所以,如果有人能够说明这背后的逻辑是什么,我会很感激。

将额外的行添加到由NSFetchedResultsControllerpipe理的UITableView

我在我的应用程序中使用UITableViewController作为表,并且我添加了一个NSFetchedResultsController来提供数据在表中显示(设置self为委托)。 不过,我想添加一个唯一的单元格作为表的最后一个单元格,与NSFetchedResultsController谓词产生的项目无关,我希望这个单元格始终位于表格的底部。 我已经尝试在表视图数据源中简单地添加1到这些方法: – (NSUInteger)numberOfSectionsInTableView:(UITableView *)sender { return [[self.fetchedResultsController sections] count] + 1; } – (NSUInteger)tableView:(UITableView *)sender numberOfRowsInSection:(NSUInteger)section { return [[[self.fetchedResultsController sections] objectAtIndex:section] numberOfObjects] + 1; } 然后捕捉这样的额外行的情况下(表只有1节): – (UITableViewCell *)tableView:(UITableView *)sender cellForRowAtIndexPath:(NSIndexPath *)indexPath { if (indexPath.row == [self.fetchedResultsController.fetchedObjects count]) { //Generate the last cell in table. } else { //Generate the rest of the […]