使用自定义textview的iphone tableview单元格 - 获取textview参考

时间:2010-02-22 20:00:55

标签: iphone uitableview delegates textview

我有一个带有15个单元格的UITableView,每个单元格中都有一个单独的文本框。 我已经实现了UITextViewDelegate,并且我能够使用textViewDidChange(etc)接收更改的textview数据。但是我还有一个大问题,我怎么知道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];

5 个答案:

答案 0 :(得分:2)

您可以将标记(整数)分配给不同的视图,并查询标记号以查看称为该方法的视图。在视图上查找tag属性:

tag

The receiver’s tag, an integer that you can use to identify view objects in your application.

@property(nonatomic) NSInteger tag

see here

答案 1 :(得分:2)

不在我的开发机器上,但是当您创建UITextView时,您应该能够为其分配标签。我认为它是[myTextView setTag:x];其中x是整数。

然后,在TextViewDidChange中使用 if (textview.tag == x) { //do something } else if (textview.tag == y) { //do something else and so on }

希望有所帮助。

答案 2 :(得分:1)

文本视图在每个委托方法中传递对自己的引用,以便您知道哪个发送了它。为了建立与单元格的连接,我将每个文本视图的tag属性设置为与它们所在单元格行对应的不同值。

答案 3 :(得分:0)

这是一个重要问题:您的文本框是静态的,还是可以随时间变化?如果它们不会更改(用户无法更改单元格数或稍后添加更多单元格),则可以为每个单元格声明一个新的textField。我的应用程序中有类似的东西。我有两个文本框,根据当前活动的textField,委托做了不同的事情。

在标题中声明单独的文本字段

UITextField *textField1;
UITextField *textField2;
UITextField *textField3;

在委托方法中,使用if语句块来找出哪个textField正在改变:

if (textField == textField1) {
    //do something
} else if (textField == myTextField2) {
    //something else
}

请注意,这仅适用于您的视图是静态的。

希望这有帮助

度过美好的一天

答案 4 :(得分:0)

当您在UITableView的单元格中搜索事件源UITextView时,只会迭代用户当前可以看到的单元格。这可以使用以下UITableView方法获得:

- (NSArray *)visibleCells