objective-c - segmentedControl 和 TextView 刷新/重新加载 - xcode

标签 objective-c ios uitextview selection uisegmentedcontrol

我有以下代码,它是语言选择选项的 segmentedControl。案例 0 用于英语,案例 1 用于希腊语,然后传递给 UITextView。问题是每次我按下案例 1 或 0 的按钮时,我都必须返回到前一个 View Controller ,它是一个 TableView Controller ,然后返回到“detailViewController”以显示正确的语言。有没有办法在不在 View Controller 之间来回切换的情况下完成此操作?类似于 UITextView 的小动画或刷新或重新加载方法。

 int a;

- (IBAction)languageSeg:(id)sender {

switch (((UISegmentedControl *)sender).selectedSegmentIndex) {

 case 0:

 a=0;

        break;

    case 1:
        a=1;

        break;

    default:

        break;
}
}

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
    // Custom initialization
}
return self;
}


-(void) viewWillAppear:(BOOL)animated{

[super viewWillAppear:YES];


UIImage *saladImage = [UIImage imageNamed:@"salad.jpg"];

UIImage *fishImage = [UIImage imageNamed:@"fish.jpg"];

 [textDetail setScrollEnabled:YES];

 [textDetail setContentSize:CGSizeMake(320, 190)];


//Switch the UIImages and UILabel based on item



switch (itemNumber) {
    case 0:
        itemName.text = @"Salad";
        itemPic.image = saladImage;
        self.title = @"Salads";

        if (a==0){

            textDetail.text = @"description in english";

        }

        if (a==1){

            textDetail.text = @"description in greek";
        }

        break;


      case 1:

       // etc.

最佳答案

您可以在 languageSeg: 方法中更新 textView 的文本,就像您最初在 viewWillAppear: 中设置它一样:

我会创建一个单独的方法来处理语言切换,然后从 viewWillAppear 和 languageSeg 以及您需要的任何其他地方调用该方法。

例如,您的语言设置方法将包含当前位于 viewWillAppear 底部的代码:

- (void) languageSetter {

    switch (itemNumber) {
       case 0:
            itemName.text = @"Salad";
            itemPic.image = saladImage;
            self.title = @"Salads";

            if (a==0){
                textDetail.text = @"description in english";
            }
            if (a==1){
               textDetail.text = @"description in greek";
            }
      break;

      case 1:
        // etc.
      break;

      default:
      // default case
      break;
    }
}

然后您的 viewWillAppear: 方法将如下所示:

-(void) viewWillAppear:(BOOL)animated{

     [super viewWillAppear:YES];
     UIImage *saladImage = [UIImage imageNamed:@"salad.jpg"];
     UIImage *fishImage = [UIImage imageNamed:@"fish.jpg"];

     [textDetail setScrollEnabled:YES];
     [textDetail setContentSize:CGSizeMake(320, 190)];

     [self languageSetter];
}

你的 languageSeg: 方法看起来像这样:

- (IBAction)languageSeg:(id)sender {

    switch (((UISegmentedControl *)sender).selectedSegmentIndex) {

       case 0:
           a=0;
           break;

       case 1:
           a=1;
           break;

       default:
           break;
    }

    [self languageSetter];
}

很多实现将取决于您的其余代码的设置方式和您的个人需求,但这是总体思路。

关于objective-c - segmentedControl 和 TextView 刷新/重新加载 - xcode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11914694/

相关文章:

ios - 我有一个带有多个 UITextView 的 UICollectionViewCell 。当任何 textView 的高度增加时,我希望 UICollectionViewCell 执行相同的操作

html - Swift:在标签或 TextView 中显示 HTML 数据

ios - Google API 更改导致我的应用程序出现问题

ios - 无法关闭 Game Center 排行榜页面

ios - applicationWillTerminate与applicationWillResignActive与applicationDidEnterBackground?它们何时准确触发?

iPhone - 使用 Sharekit 将图像发送到 Facebook

ios - 在phonegap iOS项目中添加自定义URL模式

ios - Azure 语音转文本 API

iOS——UITextView 禁用滚动但启用触摸

ios - 提取不同格式的JSON数据