我想了解iOS开发,并遵循Apple自己的教程来制作待办事项列表。在教程后,他们建议我继续构建应用程序,实现更多功能等等。点击展开并在UITableViewCell中显示更多文本
我想实现的是当用户点击一个单元格时,它展开并显示额外的内容。例如:现在
Buy groceries <- "item1"
Buy apples <- "subitem1"
Buy bread <- "subitem2"
Buy milk <- "subitem3"
Do homework <- "item2"
Go for a jog <- "item3"
我有一个XYZToDoSubItem
类和XYZToDoItem
类:
Buy groceries <- "item1"
Do homework <- "item2"
Go for a jog <- "item3"
挖掘时,打开这个。 XYZToDoItem
从XYZToDoSubItem
继承名称,完成状态和创建日期。另外它有一个包含子项目的可变数组。
我也实施一组的其它功能:
- 当用户“拥有”细胞进入编辑模式
- 当用户双抽头的细胞,将其设置完成状态为YES和添加复选标记
所以单击不能干扰这些功能。
我也有一个水龙头一个“监听器”(未完成viewDidLoad
功能):
-(void) viewDidLoad {
UITapGestureRecognizer *stp = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
stp.numberOfTapsRequired = 1;
stp.numberOfTouchesRequired = 1;
[stp requireGestureRecognizerToFail:dtp];
[self.tableView addGestureRecognizer:stp];
}
凡dtp
是双击识别。
我handleSingleTap
功能如下:
- (void)handleSingleTap:(UITapGestureRecognizer *)gestureRecognizer {
CGPoint p = [gestureRecognizer locationInView:self.tableView];
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:p];
if(indexPath != nil) {
//Add contents to cell and update height here
}
}
基本上它的工作原理是,当用户点击一个单元格(不进行再次挖掘它(无双击)),handleSingleTap
运行。在这里,我们获得了单元格的indexPath
,如果这不是nil
(这意味着单元被挖掘,而不是背景),我想添加更多内容到单元格并更新高度。
我该如何着手做这件事?
是否有可能只需要添加的内容为多subtitle
s,然后调用[self.tableView realoadData]
或[self.tableView beginUpdates]
和[self.tableView endUpdates]
,和iOS处理调整自己?如果是这样的话,我该如何添加数据?我怎样才能调用resize方法?如果不是,插入数据后如何手动调整单元格大小?
我的设置是这样的:
In the ViewController class:
@property NSMutableArray *toDoItems;
In the ToDoItem class (inherits from subitem):
@property NSMutableArray *toDoSubItems;
In the SubItem class:
@property NSString *itemName;
@property BOOL completed;
@property (readonly) NSDate *creationDate;
我希望有人能够找出如何解决这个问题。
在此先感谢, 亚历山大。