【问题标题】:How to know view name in run time in iphone如何在 iphone 的运行时知道视图名称
【发布时间】:2011-06-06 10:21:21
【问题描述】:

我有超过 3 个视图和一个窗口视图(pdfReader.xib nib 文件)。我有一个屏幕,其中包含由表格视图表示的章节名称。每当加载任何选定的相关章节时。我用不同的观点来控制。我想知道我的“pdfReader.m”文件中正在加载哪个视图。所以我将加载pdf文件以供阅读。我正在像下面的代码一样加载我的视图。

我已经写了选择行的代码

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
..........
.........


    switch (indexPath.row) {
        case 0:
            NSLog(@"!!!!!!");
            pdfReader.view = pdfReader.Chapter1;
            break;
        case 1:
            //pdfReader.view = pdfReader.Chapter2;
            break;
        case 2:
            //pdfReader.view = pdfReader.Chapter3;
            break;

        default:
            break;
    }

...
...
}

我想在 pdfReader.m 文件中加载哪个视图。

【问题讨论】:

    标签: iphone uiview uiviewcontroller


    【解决方案1】:

    您需要为每个视图分配一个 标签 值。 (当您使用init 方法创建视图时)

     pdfReader.Chapter1.tag = 1;
     pdfReader.Chapter2.tag = 2;
     pdfReader.Chapter3.tag = 3;
    

    现在修改你的 didSelectRowAtIndexPath 函数

        -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
        {
    
           if(pdfReader.view.tag == 1)
           {
              //First chapter used 
           }
           else if(pdfReader.view.tag == 2)
           {       
                //Second chapter used 
           }
           else if(pdfReader.view.tag == 3)
           {
                //third chapter used 
           }
           ..........................
           ..........................
           ..........................
    
          switch (indexPath.row)
          {
          case 0:
               pdfReader.view = pdfReader.Chapter1;
            break;
          case 1:
               //pdfReader.view = pdfReader.Chapter2;
            break;
          case 2:
               //pdfReader.view = pdfReader.Chapter3;
            break;
    
          default:
            break;
         }
       }
    

    【讨论】:

    • 要在 pdfreader.m 文件中查看视图名称,我必须在哪里写什么?
    • @Ajay_Kumar :(当您使用 init 方法创建视图时)请参阅我更新的答案。
    • 感谢您的回答。但我必须在我的 pdfcontroller 页面中为 pdf 文件加载而写。其中包含许多视图。是否有可能加载哪些视图,所以我将在 pdfController 中获取其相关的 pdf 文件。像下面的代码,但这不起作用。我在 viwLoad 函数中写了这个。 if(self.view.tag==1) NSLog(@"!!3333333!1111");
    【解决方案2】:

    只需将 PDFView 对象的引用传递给 ViewController 中的 TableView。

    【讨论】:

      【解决方案3】:

      UIKit 的每个 UI 对象都有一个名为 tag 的字段,此属性可用于设置任何类型的整数变量。一种方法是:

      pdfReader.tag = indexPath.row;
      switch (indexPath.row) {
          case 0:
              pdfReader.view = pdfReader.Chapter1;
              break;
          case 1:
              //pdfReader.view = pdfReader.Chapter2;
              break;
          case 2:
              //pdfReader.view = pdfReader.Chapter3;
              break;
      
          default:
              break;
      }
      

      我唯一不确定的是,是否建议为每个章节准备一个视图,因为如果章节数量增加,您可能会遇到内存问题。

      【讨论】:

      • 对每一章做出不同的观点不是一个好主意吗?如果没有,那么正确的方法是什么。请解释一下?
      • 尝试重用您创建的 UIViews,如果您打开 PDF 文件,请将 PDF 的内容重新分配给您正在使用的视图。这样,您只需要跟踪 PDF。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-29
      • 1970-01-01
      相关资源
      最近更新 更多