我如何区分和引用以编程方式创建的各种 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?的主要内容,如果未能解决你的问题,请参考以下文章
Android 编程:如何以网格方式以编程方式创建各种视图类型