带有自定义文本视图的 iPhone 表格视图单元格 - 获取文本视图参考
-
22-09-2019 - |
题
我有一个包含 15 个单元格的 UITableView,每个单元格中都有一个单独的文本框。我已经实现了 UITextViewDelegate,并且能够使用 textViewDidChange (等)接收更改后的文本视图数据。但我仍然有一个大问题,我怎么知道哪个 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
}
希望有所帮助一点。
在文本视图传递一个参考自己在每委托方法,所以你知道哪一个发送它。要对小区的连接,我想每个文本视图的tag
属性设置为不同的值对应于他们所在的单元格的行。
下面是一个重要的问题:你的文本框静态的,也可以随时间变化?如果他们不改变(用户不能改变细胞的数量或增加更多更高版本),那么你可以声明每个小区的新文本框。我有我的应用程序类似的东西。我有两个文本框和取决于哪个文本框是当前激活的,委托做不同的东西。
声明单独的文本字段中的报头
UITextField *textField1;
UITextField *textField2;
UITextField *textField3;
在委托方法,使用if语句的块以找出哪些文本框是变化:
if (textField == textField1) {
//do something
} else if (textField == myTextField2) {
//something else
}
请注意,如果你的观点是静态的,这确实只是工作。
希望这有助于
有一个伟大的天
当你搜索的UITableView的细胞事件源的UITextView,仅遍历细胞,用户可以看到当前。这可以通过使用下面的UITableView方法获得:
- (NSArray *)visibleCells