0

私はUIViewそれにボタンがあるものを持っています。ボタンは一部の配列ではありません。

UIViewforループを使用して)全体を見て、タイトルでボタンを探し、後で削除したいと思います。

- (void)removeButtonByTitle:(NSString*)name
{
    for (buttons in view) {
        // find the button with the name "name" and remove it from the view 
    }
}

名前/ポインターを配列に保存せずにそれを行う方法を見つけることができませんでした。

4

4 に答える 4

3

通常、これにはtagプロパティを使用することをお勧めします。次に、メソッドを使用してボタンを簡単に見つけることができviewWithTag:、ボタンのタイトルを変更したりアプリをローカライズしたりする場合にコードを調整する必要はありません。

タイトルでボタンを見つける必要がある場合は、次のようにします。

NSString *buttonTitle = @"name";
UIButton *buttonWithTitle = nil;
for (UIButton *button in view.subviews) {
    if (![button isKindOfClass:[UIButton class]]) continue;
    if ([[button currentTitle] isEqualToString:buttonTitle]) {
        buttonWithTitle = button;
        break;
    }
}
//do something with the button...
于 2013-04-28T07:02:28.083 に答える
1

さて、あなたはこのようにすることができます:

for (UIView *v in view.subviews)
    if ([v isKindOfClass:[UIButton class]] && [[(UIButton *)v currentTitle] isEqualToString:@""])
        //remove

ボタンのタイトルはローカライズ中に変更されたり、状態によって異なる場合があります。

于 2013-04-28T07:00:50.590 に答える
1

それを行う:

- (void)removeButtonByTitle:(NSString *)name
{
  for (UIView *tempView in self.subviews)
    {
       if ([tempView isKindOfClass:[UIButton class]]) // make sure it's actually a UIButton
         { 
              UIButton *button = tempView;
              if ([button.titleLabel.text isEqualToString:name])  // compare the title
                 {
                    [button removeFromSuperview];
                 }
         }
    }
 }
于 2013-04-28T07:00:59.037 に答える