【问题标题】:Pass UILabel through a function通过函数传递 UILabel
【发布时间】:2013-06-13 13:07:35
【问题描述】:

我想知道如何将UIlabel 传递给函数?

我编写了一个从表格中提供 UILabel 文本的函数,但现在我想运行该函数,并将 UIlabel 传递给函数的头部。就像您对文本或 int 所做的那样。我需要一个指针还是可以以正常方式传递标签?

-(void)giveText:(NSString) *textinsert  
{
  label1.text=textinsert;
}

如何将所有标签保存在数组中并遍历数组?

【问题讨论】:

  • 我希望..:(NSString) *textinsert 是一个错字。
  • 我匆忙翻译了。

标签: objective-c uilabel


【解决方案1】:

说实话,在阅读了你所放的 cmets 之后,我不相信你完全理解发生了什么。

这个-(void)giveText:(NSString) *textinsert 将不起作用语法错误这个方法应该是-(void)giveText:(NSString *)textinsert,但这不是你的问题。

据我了解,您希望将UILabel 传递给该方法。

所以你想做的是像

- (void)someMethod
{
    UILabel *label1 = [[UILabel alloc] init];
    [self giveText:label1];
}

- (void)giveText:(UILabel *)label
{
    // Do what ever with label.
}

那到底是怎么回事?

我们创建了方法giveText:,它接受UILabel作为参数,然后我们通过[self giveText:label1];someMethod调用这个方法,我们传入我们创建的UILabel

【讨论】:

    【解决方案2】:

    试试这个

     NSMutableArray *arr=[[NSMutableArray alloc]init];
    
    //label Creation
    UILabel *lbl=[[UILabel alloc]init];
    
    //add into array
    [arr addObject:lbl];
    
    
    // get label From array one by one
    for (UILabel *lbl in arr) {
     //pass label to function
        [self passLabel:lbl];
    }
    
    -(void)passLabel:(UILabel *)lbl
    
    {
    // do here
    }
    

    【讨论】:

    • thnx :) 除了 [self passLabel:lbl];至少在 os6 上不起作用,但我用它代替 lbl.text;
    • [self passLabel:lbl] 中有什么问题;
    • 为什么要把UILabel放到一个数组里再取出一个for loop好像有点没意义?
    • 问题是 passLabel 不再被支持了。至少错误消息是这么说的。
    • 你好。我把它标记为正确的答案。不知道为什么我得到 -6 这是一个很好的问题,简单但很好
    【解决方案3】:

    你可以像 nsstring 一样传递标签。

    如果您只是想更改 ot 的文本,我认为您不应该将标签传递给函数。 只需创建返回字符串的函数

    label.text = [self getLabelText];
    - (NSString *) getLabelText {
        NSString *text = @"text";
        return text;
    }
    

    【讨论】:

    • 我认为将 UI 对象传递给函数只是为了改变它的值是不明智的。它使代码的可重用性降低,而且它不是 OOP 方式。更方便的是制作将返回字符串的函数而不是传递标签并在那里更改它的值。明天他将决定将 label 更改为 textView,他将需要更改函数原型,更改函数体。同样,您可能需要在标签和 textView 中返回此字符串。你会做什么?创建两个函数。一改标签二改textView?
    • 把我的评论读到最后)有两个例子。我的意思正是这种情况。人问问题是因为他需要建议,我刚刚建议过。是否遵循它并决定它是否有帮助取决于提出问题的人
    • 我不会在这里详细运行,因为它完全超出了问题的范围。所以只有一个词 - MVC。
    • 很容易。抱歉,我不在面试中。我有更重要的事情要做。祝你好运
    猜你喜欢
    • 2021-07-22
    • 2011-11-13
    • 2016-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-25
    相关资源
    最近更新 更多