我如何区分和引用以编程方式创建的各种 UITextView?

Posted

技术标签:

【中文标题】我如何区分和引用以编程方式创建的各种 UITextView?【英文标题】:how can i differentiate and refer to various UITextViews that are created programmatically? 【发布时间】:2014-04-03 09:56:28 【问题描述】:

每次单击ADD 按钮时都会创建一个UITextView。每次我单击ADD 时,Y-axis 的值都会改变(比如 y+=100),因此会在另一个下方创建一组 UITextView。我不知道如何区分和访问特定的UITextView。感谢您的帮助!

编辑:

-(IBAction)access:(id)sender 
     
     int tg=[sender superview].tag;     
     UIView *view=(UIView *)[textView viewWithTag:tg-1];  
 

tg-1 因为我试图访问以前的 UITextView,当我这样做时它返回 NULL。

【问题讨论】:

你可以为每个 UITextViews 设置标签值 您可以在创建它们时通过为其分配标签来轻松访问不同的UITextView。 @bhanu @jaswantsinghrajpurohit 我就是这样做的,但后来我无法访问UITextView UIView *view=(UIView *)[textView viewWithTag:tg]; 你面临什么问题? @motox 为所有文本视图设置标签 【参考方案1】:

将它们存储在 NSMutableArray 上: NSMutableArray * views = [[NSMutableArray alloc] init]

您的 IBAction

-(IBAction)access:(id)sender int tg=[sender superview].tag; UIView *view=(UIView *)[textView viewWithTag:tg-1]; [views addObject: views];

然后您可以使用以下方法获取所有具有整数索引的引用:

UIView * storedView = [views objectAtIndex: 1];

【讨论】:

你依赖于数组中的对象不改变它们的索引。但是当您添加和删除视图时会发生这种情况。最好使用NSMutableDictionary 和标签作为NSNumber 形式的键。 [views setValue: view forKey:@(tag)] 但是我认为 OP 有一个不好的方法,或者没有很好地解释他的问题。【参考方案2】:

使用视图标签来区分视图并访问它们。

你没有说你是如何创建新视图的,但是这样的事情应该可以工作:

UIView* new_view = [UITextView initWithFrame(...)];
new_view.tag = generate_tag()

generate_tag() 函数生成对您的应用程序有意义的任何命名方案。

【讨论】:

-(IBAction)access:(id)sender int tg=[sender superview].tag; UIView *view=(UIView *)[extraCommentView viewWithTag:tg-1]; 它返回 NULL。 tg-1 因为我试图访问以前的 UITextView

以上是关于我如何区分和引用以编程方式创建的各种 UITextView?的主要内容,如果未能解决你的问题,请参考以下文章

引用以编程方式创建的 UI 元素

使用以编程方式创建的按钮连接 segue

无法更改 UIText 视图的字体(使用 Web 服务时)

Android 编程:如何以网格方式以编程方式创建各种视图类型

使用以编程方式创建的自定义 UITableViewController 管理 UITableView

使用以编程方式创建的 Windows 媒体播放器进行基本播放