【问题标题】:How to convert an NSString to id or UIView objective-c iphone [closed]如何将 NSString 转换为 id 或 UIView objective-c iphone [关闭]
【发布时间】:2013-01-07 20:16:16
【问题描述】:

如何将我的NSString *myString = @"myUIView"; 转换为 UIView: myUIView 以便在我的代码中使用 UIView?

我有一个字符串要更改为视图的名称。

我想使用 NSString 中的视图名称更改视图,因此我的 Nsstring 可能设置为“self.view”,但每次使用 UIView transitionFromView 切换视图时我都会更改它:self.view toView:View2 duration:0.4 options:UIViewAnimationOptionTransitionCrossDissolve completion:^(BOOL finished) {}

但是如何用我的字符串替换粗体部分,即 UIView 的名称而不是字符串形式(因为它不起作用)

【问题讨论】:

  • 我不明白你的问题?你想显示 NSString 吗?
  • 你的问题不清楚,请解释一下
  • 您希望如何将 NSString 转换为 UIView?
  • 三个答案,每个答案都解决一个不同的问题,这是一个糟糕问题的一个很好的迹象。

标签: objective-c cocoa-touch nsstring


【解决方案1】:

假设您将myUIView 定义为属性,例如

@property (nonatomic, strong) IBOutlet UIView *myUIView;

然后您可以使用-valueForKey: 方法从字符串中访问它,如

[self valueForKey:@"myUIView"]

【讨论】:

  • 这是一个很好的答案。另一种可能的解决方案是,如果您以编程方式生成视图,则预加载字典中的所有 UIView 对象: NSDictionary *viewsDictionary = [NSDictionary dictionaryWithObjectsAndKeys:myView1,@"myView1",myView2,@"myView2",nil];然后以这种方式访问​​视图: UIView *aView = viewDictionary[@"myView1"];
【解决方案2】:

这会得到一个从 xib 加载的 UIViewController。

    Class vcClass = NSClassFromString (@"myUIView");
    UIViewController *detailViewController = [[vcClass alloc] initWithNibName:@"myUIView" bundle:nil];

如果你只想要一个 UIView 对象,那就这样做吧:

    UIView* myView = [[vcClass alloc] init];

但实际上,正如迄今为止的三个答案所表明的那样,根本不清楚你是什么。你能说清楚一点吗?你想做什么?

【讨论】:

    【解决方案3】:

    假设您想显示NSString,您可以使用UILabel,它是UIView 的子类。您不会将NSString“转换”为UIViewNSString 是需要使用 UIView 子类呈现的数据结构。

    下面的代码会将你的字符串放在屏幕上。

    UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(0,0,100,100)];
    [myLabel setText:myString];
    [self.view addSubview:myLabel];
    

    【讨论】:

      猜你喜欢
      • 2011-01-24
      • 1970-01-01
      • 2011-07-05
      • 2014-10-25
      • 2012-10-06
      • 2011-12-04
      • 2018-04-27
      • 2018-04-06
      • 2011-09-19
      相关资源
      最近更新 更多