• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
New information. Was: Re: Weird UITableView problem
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

New information. Was: Re: Weird UITableView problem


  • Subject: New information. Was: Re: Weird UITableView problem
  • From: William Squires <email@hidden>
  • Date: Tue, 28 Apr 2015 11:45:04 -0500

Thinking this was a Swift problem, I recreated the project, but with ObjC as the language. I set up the UI the same as with the Swift project. It too, only shows a subset of the array, only this one shows 15 rows, not 13. Here's the ViewController.m

//
//  ViewController.m
//  SimpleObjCTable
//
//  Created by William Squires on 4/28/15.
//  Copyright (c) 2015 William Squires. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@property NSArray *dwarves;

@end

@implementation ViewController

- (void)viewDidLoad
{
[super viewDidLoad];
self.dwarves = [NSArray arrayWithObjects:@"Sleepy",
                                    @"Sneezy",
                                    @"Bashful",
                                    @"Happy",
                                    @"Doc",
                                    @"Grumpy",
                                    @"Dopey",
                                    @"Thorin",
                                    @"Dorin",
                                    @"Nori",
                                    @"Ori",
                                    @"Balin",
                                    @"Dwalin",
                                    @"Fili",
                                    @"Kili",
                                    @"Oin", // These are not shown.
                                    @"Gloin",
                                    @"Bifur",
                                    @"Bofur",
                                    @"Bombur",
                                    nil];

// Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.
}

#pragma mark "UITableView Methods"

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
NSInteger theCount = [self.dwarves count];

NSLog(@"theCount = %ld", theCount);
return theCount;
}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"indexPath.row = %ld", indexPath.row);
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"SimpleTableIdentifier"];
if (cell == nil)
  {
  cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"SimpleTableIdentifier"];
  }
cell.textLabel.text = [self.dwarves objectAtIndex:indexPath.row];
return cell;
}

@end

running it gives me (in the debug console) 4 instances of "theCount = 20", followed by 15 lines of "indexPath.row = 0" up to "indexPath.row = 14" (15 total, which corresponds to the comment in the initialization line for dwarves = NSArray... line above.) In both cases (the Swift project, and the ObjC project) I use the default view (with the size class w:any, h:any) and pin the UITableView to the edges of the parent view.
  Now I'm totally lost as to why only a limited subset of the rows are being shown, especially given that tableView:numberOfRowsInSection: consistently returns 20 (the number of items initializing the array). HELP!!

On Apr 26, 2015, at 11:29 AM, William Squires <email@hidden> wrote:

> I made a fairly simple iOS app (Single View template, iPhone, Swift) that has a UITableView. I've got it all hooked up, and running the project (in the simulator) shows the table view, but only 13 (out of 20) rows are ever shown.
>
> here's the deal:
>
> ViewController.swift
> --------------------
> class ViewController: UIViewController, UITableViewDelegate, UITableViewSource
> {
> private let dwarves = ["Sleepy",
>                       "Sneezy",
>                       "Bashful",
>                       "Happy,"
>                       "Doc",
>                       "Grumpy",
>                       "Dopey",
>                       "Thorin",
>                       "Dorin",
>                       "Nori",
>                       "Ori",
>                       "Balin",
>                       "Dwalin",
>                       "Fili",  // From here on, these might as well not exist (index >= 13)
>                       "Kili",
>                       "Oin",
>                       "Gloin",
>                       "Bifur",
>                       "Bofur",
>                       "Bombur"
>                       ]
> let simpleTableIdentifier = "SimpleTableIdentifier"
>
> ...
>
> // MARK: UITableViewDataSource/UITableViewDelegate methods
>  func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
>  {
>  return dwarves.count
>  }
>
>  func tableView(tableView:UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
>  {
>  var cell = tableView.dequeueReusableCellWithIdentifier(simpleTableIdentifier) as? UITableViewCell
>  if (cell == nil)
>    {
>    cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: simpleTableIdentifier)
>    {
>  cell!.textLabel?.text = dwarves[indexPath.row]
>  return cell
>  }
> }
>
> When run, only the first 13 names are shown in the table view; everything from "Fili" on does not show up. I would expect either:
>
> 1) a syntax error in the array declaration (which should be caught by Xcode)
> 2) show all the items in the array, or
> 3) show none of them.
>
> Is there a (hidden) limit in the simulator that only 13 rows can be shown in a UITableView? If not, can anyone else replicate this problem?
>
> Finally, how do I call NSLog() from Swift, and have it print an object? In ObjC, it would be:
>
> NSLog(@"My object: %@\n\n",myObject);
>
> where myObject resides in MyObject.m and declared in MyObject.h and implements -(NSString *)description – in Swift, I would just have a .swift file, but how would I print it (myObject variable) to the (debug) console at runtime? What about a Swift "String" type?
>
>


_______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden


  • Follow-Ups:
    • Yet more new information. Was: Re: Weird UITableView problem
      • From: William Squires <email@hidden>
    • Re: New information. Was: Re: Weird UITableView problem
      • From: Quincey Morris <email@hidden>
    • Re: New information. Was: Re: Weird UITableView problem
      • From: Aaron Montgomery <email@hidden>
References: 
 >Weird UITableView problem (From: William Squires <email@hidden>)

  • Prev by Date: Re: Running AppleScripts from an App using NSAppleScript
  • Next by Date: Re: New information. Was: Re: Weird UITableView problem
  • Previous by thread: Re: Weird UITableView problem
  • Next by thread: Re: New information. Was: Re: Weird UITableView problem
  • Index(es):
    • Date
    • Thread