目标 C:UITableView:cellForRowAtIndexPath 在 iPhone 中被调用但在 iPad 中失败

Posted

技术标签:

【中文标题】目标 C:UITableView:cellForRowAtIndexPath 在 iPhone 中被调用但在 iPad 中失败【英文标题】:Objective C : UITableView : cellForRowAtIndexPath being called in iPhone but fails in iPad 【发布时间】:2014-04-02 06:17:46 【问题描述】:

cellForRowAtIndexPath: 在 iPhone 中被调用,但在 iPad 中失败。因为我刚刚开始将现有的 iPhone 应用程序迁移到通用应用程序,所以至少现在我在两个环境中使用相同的 xib 文件。任何帮助将不胜感激,因为它已经破坏了我的 2 个工作日。(这不是因为“节数”或“节中的行”,尝试使用硬编码值)。

在 iPhone 模拟器上工作正常,但在 iPad 模拟器上不工作:

    -(void)viewDidLoad
             [super viewDidLoad];
             [mytable setSeparatorStyle:UITableViewCellSeparatorStyleNone];

              mytable.delegate = self;
              mytable.dataSource = self;
      

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
       
        return 1;
        

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
  
    //never get called when device is iPad simulator.
  

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

  return [tableData count];//tried with return 1;


-(void)LoadBindMenu

     //this method is called from external code, its working, do not suspect pls
    //collection will be populated and reloading data

     [mytable reloadData];

 

【问题讨论】:

您是否正确地将数据源提供给该类? 给出一些解决方案的代码 @ParvendraSingh 你可以在 Xib 中手动完成,无需代码! “我可以向你保证一切都设置正确”。这让我有点哭了。您严重缺乏有关您的问题的信息并且缺少代码,因此我们可以采取步骤进行重现。解决此问题,我们可以帮助您解决问题。 @Singh 我们如何使用断点的帮助,因为这些委托方法是在内部调用的。 【参考方案1】:

写在你的 Prifix.pch 中

      #define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
      #define IS_WIDESCREEN (fabs((double)[[UIScreen mainScreen]bounds].size.height -    (double)568) < DBL_EPSILON)
      #define IS_IPHONE (([[[UIDevice currentDevice] model] isEqualToString:@"iPhone"]) || ([[[UIDevice currentDevice] model] isEqualToString: @"iPhone Simulator"]))
      #define IS_IPOD   ([[[UIDevice currentDevice]model] isEqualToString:@"iPod touch"])
      #define IS_IPOD_5 ((IS_IPOD) && IS_WIDESCREEN)
      #define IS_IPHONE_5 ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) < DBL_EPSILON )

在你看来WillApper.......

         if(IS_IPAD)
            

             tableView.frame=CGRectMake(0,0,768,1024);

            

          if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
            

              if ([[UIScreen mainScreen] bounds].size.height == 568)
                

                   tableView.frame=CGRectMake(0,0,320,568);

                
             else
               
                  tableView.frame=CGRectMake(0,0,320,480);
               
            

【讨论】:

以上是关于目标 C:UITableView:cellForRowAtIndexPath 在 iPhone 中被调用但在 iPad 中失败的主要内容,如果未能解决你的问题,请参考以下文章

目标 - C:UITableView 内容在滚动时发生变化

如何初始化添加到目标 c 中的 .xib 的 UITableView?

目标 C:使用代码将工具栏添加到 UITableView(在导航控制器中)

目标 C:UITableView:cellForRowAtIndexPath 在 iPhone 中被调用但在 iPad 中失败

目标 C:标签文本(UIControl 的子类)未显示在 UITableview 中

为啥我不能专注于 iOS 中 uitableview 单元格(越过导航栏)中的正确 uitextfield,目标 c