iphone tableview单元格与自定义textview - 获取textview参考
我有一个UITableView与15单元格,每个单元格中有一个单独的文本框。 我已经实现了UITextViewDelegate,并且能够使用textViewDidChange(etc)接收更改后的textview数据。但我仍然有一个大问题,我怎么知道哪个textview发送了这个(即哪个单元格被textview改变了?)iphone tableview单元格与自定义textview - 获取textview参考
它很有趣,有很多工作,但不知道它来自哪里。
如果需要,可以使用一大堆代码。
问候@norskben
代码
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
//Big Text Box
UITextView *detailLabel = [[UITextView alloc] initWithFrame:CGRectMake(30, 80, CONST_Cell_width, 150)];
detailLabel.tag = 20;
[cell.contentView addSubview:detailLabel];
}
UITextView * detailLabel = (UITextView *) [cell.contentView viewWithTag:20];
您可以指定标签(整数),以不同的观点和查询标签号,查看查看调用的方法。寻找对视图标签属性:
tag
The receiver’s tag, an integer that you can use to identify view objects in your application.
@property(nonatomic) NSInteger tag
不是在我开发的机器,但是当你创建的UITextView你应该能够给它分配一个标签。我认为它是[myTextView setTag:x];其中x是一个整数。
然后,在TextViewDidChange使用 if (textview.tag == x) { //do something } else if (textview.tag == y) { //do something else and so on }
希望帮助一点点。
下面是一个重要的问题:您的文本框是静态的,还是可以随时间变化?如果它们不会改变(用户不能改变单元格数量或稍后添加更多),那么您可以为每个单元格声明一个新的textField。我的应用中有类似的东西。我有两个文本框,根据哪个textField当前处于活动状态,代表做了一些不同的事情。
中声明你的委托方法头
UITextField *textField1;
UITextField *textField2;
UITextField *textField3;
单独的文本字段,请使用if语句块,找出哪些文本字段正在发生变化:
if (textField == textField1) {
//do something
} else if (textField == myTextField2) {
//something else
}
注意,这真的只是工作,如果你的视图是静态的。
希望这有助于
有一个伟大的日子
文本的意见传递引用自己在每一个委托方法,让你知道哪个送的。为了连接到单元格,我将每个文本视图的tag
属性设置为与其所在单元格的行对应的不同值。
当您在UITableView的单元格中搜索事件源UITextView只能遍历用户当前可以看到的单元格。这可以使用以下UITableView方法获得:
- (NSArray *)visibleCells
如果单元格被重用,该怎么办?原帖提到UITableView中有15个单元格。假设原始海报没有禁用单元重用,那么不能保证特定的UITextView总是与同一单元相关联。 – mmccomb 2010-02-22 21:23:17
你说得对。您必须使用开关或if语句块将每个textField添加到单元格的contentView,明确选择哪个textField会进入单元格indexPath。 注意到当您将textField从屏幕上滚动时,textBox中的数据在单元重新加载时消失,这一点也很有趣。 – Justin 2010-02-22 21:26:20