Tag: 可重用性

ios创build,然后dynamic添加UI元素

我不知道这是否可能,但听起来应该是这样的。 我想要做的是,在界面生成器中创buildUIViews(或UIViewControllers不太确定它将如何工作)说…其中10个,并根据用户select使用它们。 例如,在状态A,我想向他展示小部件1,2和3; 在状态B部件3,5和7等 编辑:我的意思是说,根据用户在前面的步骤中select什么,它们都导致相同的UIViewController,但它应该根据上述“状态”不同地呈现自己。 而现在我无法为每个不同的组合创build一个不同的UIViewController 🙂 而且能够将它们放在父视图中是必须的。 有什么build议么?

重用细胞… :(

我有一个9节56行的桌子。 我想为每个单元添加一个文本标签。 我创build了一个包含56个NSDictionaries的NSArray menuList和一个包含每个节( menuList的行数的数组。 这里是我的代码,但它不能正常工作: // Customize the appearance of table view cells. – (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { //Use existing cell (reusable) UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kCellIdentifier]; //If no existing cell, create a new one if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:kCellIdentifier] autorelease]; //Define cell accessory type cell.accessoryType […]

在UIScrollView的分页上重用3个视图

我做了以下代码,其中三个视图可以在UIScrollView分页过程中重用,以保存实时内存 – > #pragma mark – UIScrollView Delegates – (void)scrollViewDidScroll:(UIScrollView *)scrollView{ CGFloat pageWidth = self.view.frame.size.width; CGPoint aContentOffSet = [[self scrollView] contentOffset] ; float currPos = aContentOffSet.x; int selectedPage = roundf(currPos/pageWidth); [[self pageControl] setCurrentPage:selectedPage]; [self update:selectedPage]; } #pragma mark – Custom methods -(void)update:(int) selectedPage{ BOOL view1FrameShallBeUnchanged = false; BOOL view2FrameShallBeUnchanged = false; BOOL view3FrameShallBeUnchanged = false; […]

表格单元没有被重用的索引path

这开始发生了蓝色。 任何想法:代码: CUSTOMCLASSNAME(我已经replace了实际的类名,因为它包含了客户端的名字) 初始化我的tableView: [self.tableView registerClass:[CUSTOMCLASSNAME class] forCellReuseIdentifier:[self reuseIdentifier]]; 在行的单元格中: 嗨,标题正在打印在控制台。 这是我的cellForRow: – (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { AVTCheckListTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:[self reuseIdentifier] forIndexPath:indexPath]; [self configureCell:cell atIndexPath:indexPath]; return cell; } – (void)configureCell:(AVTCheckListTableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath { ChecklistGroup *group = [self.checklistFetchedResultsController.fetchedObjects objectAtIndex:indexPath.section]; ChecklistItem *item = [self getChecklistItemForIndexPath:indexPath]; [cell setSelectionStyle:UITableViewCellSelectionStyleNone]; [[cell cellTextView] setAttributedText:[[item checked] boolValue] […]

复制符号:在静态库B中包含静态库A,在XCode项目中也包含库A和B.

我一直在尝试为应用程序开发构build一组可重用的库,但是我开始遇到一个问题。 我的一个静态库是一套通用的方法(Objective-C基础类的类别,以提高其可用性),我倾向于在每个项目中使用它们。 (我们将其称为Lib A …即XCode项目A产生libProjectA.a) 然后,我有其他的静态库,包含专门的math代码等等(我们称之为库B)。库B链接到库A,因为它需要使用一些通用function。 (即XCode项目B与libProjectA.a链接并生成libProjectB.a) 在我的XCode项目中,我想包含并依赖于Lib A,因为它具有我一直使用的一般用途。 我也想包括和依赖于Lib B,因为我需要这个专门的mathfunction。 (即我的应用程序项目希望链接libProjectA.a和libProjectB.a) 但是,当我尝试构build我的XCode项目时,出现重复符号的错误,因为Lib A中定义的符号也在Lib B中定义。 ld: duplicate symbol _OBJC_METACLASS_$_Foo in /Users/kenny/xcode_build/Release-iphonesimulator/lib_ApplicationCore.a(Foo.o) and /Users/kenny/xcode_build/Release-iphonesimulator/lib_SpecializedMath.a(Foo.o) 我怎样才能解决这个问题? 我想开发可重用的库来加速我的应用程序开发,并通过testing/改进的代码来提高稳定性。 我从错误的angular度来看待这个问题吗? 我正在开发的iOS,所以我不能使用dylibs,他们必须是静态的。 如何将这些库包含在我的项目中,以避免重复的符号?

停止重用自定义单元格Swift

我有一个从数组中获取数据的自定义单元的可用uitableview 。 自定义单元格有一个uilabel和一个uibutton (直到uilabel文本或加载文本的数组对象都是零)。 发射一切都很好。 当我按下uibutton数组被添加时,新的单元格被插入单元格下面。 但是当我滚动 – 突然间uibutton出现在其他单元格,其中这个有条件的uilabel text isEmpty是uilabel text isEmpty不是暗示的。 这是整个过程的样子 这是我的代码为cellForRowAtIndexPath func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { var cell:TblCell = self.tableView.dequeueReusableCellWithIdentifier("cell") as! TblCell cell.lblCarName.text = someTagsArray[indexPath.row] if let text = cell.lblCarName.text where text.isEmpty { cell.act1.hidden = false } else { println("Failed") } cell.act1.setTitle(answersdict[answersdict.endIndex – 2], forState:UIControlState.Normal) cell.act2.setTitle(answersdict.last, forState:UIControlState.Normal) […]

一个具有多个“文件所有者”的xib文件

我有三个不同的UITableViews,每个都在它自己的视图中,通过标签访问。 所有这三个表将理想地共享相同的自定义UITableViewCell类和.xib文件。 我从一个表开始,将.xib的类设置为我的自定义类,并将.xib的文件所有者设置为表的父级UIViewController,这非常棒。 所有与视图相关的自定义代码都在单元的类中(基于控制器设置的属性的背景图像,基于控制器设置的单元属性的基于标签需要的行数的自定义单元高度等) 。 结果很好:单元格负责所有的可视化布局,并响应用户对单元格控件的操作,而视图控制器则负责创build单元格并设置其数据。 现在,我需要在其他表中重用单元格,但是,自定义单元格的.xib具有单个文件所有者这一事实是一个问题。 而不是复制.xib文件,是否有一个简单的方法来允许多个控制器拥有它?

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了具有错误框架高度的单元格,以及是否稍后使用正确的框架高度出列以避免冗余。 所以,如果有人能够说明这背后的逻辑是什么,我会很感激。