I have a table view with varying height, as defined in the heightForRowAtIndexPath. For some very odd reason, the image is "indented" to the right based on the height; if the height is low enough, the image is stuck to the left side of the cell, but as the height increases, the image for said cell is shifted rightward compared to other rows.
The result of this is a very poor looking list, with images floppily laid out in a zig-zag pattern depending on the height of each individual row.
The problem is revealed by this simple example:
- (CGFloat)tableView:(UITableView *)tableView
heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return (indexPath.row+1) * 50;
}
Each cell is set up (simplified) as a "Subtitle" style cell with:
// ...
cell.textLabel.text = @"foo";
cell.detailTextLabel.text = @"bar";
cell.imageView.backgroundColor = [UIColor redColor]; // for debugging; i have images with transparent bg
cell.imageView.image = anImageThatIs55x50pixelsBig;
return cell;
Any ideas? My head bleeds from the wall-love-affair.
Edit: uploaded a screen which displays this. The "image" is just a screenshot of a tiny area of the screen which makes it look a little weird, but you get the picture I'm sure: http://img28.imageshack.us/img28/549/screenshot20100311at172.png
Hello,
I'm struggling in creating a RTL UI in iPhone application. The framework doesn't seem to have any support for RTL languages.
The only thing is the alignment inside labels, which is nice, but it conflicts with other controls behaviour.
The question is:
Is there a working code for a RTL TableView? Something that would handle the disclosure buttons to be on the left, section titles to be right aligned, index view to be left aligned?
As far as I understand I cannot move the index view of the tableview, i have to overlay some custom control...
Any suggestions/pointers/examples?
p.s. this is not a duplication of this question: http://stackoverflow.com/questions/1677988/right-to-left-alignment-for-uitableview
since what I am looking for is a deeper customization, not just a new type of CellView.
(Update: Mar 10) For now - I've removed support for indexView from the tableView at all, implemented the cells as custom views by myself (with disclosure buttons on the left), and customized the header/footer of the table as well. the only thing that is left is the Index View.
Thanks in advance!
initWithData does not convert my data object into a string properly. When I check the length of the data object, it has a value.
NSMutableData* receivedData =[[NSMutableData data] retain];
NSString* json_string = [[NSString alloc] initWithData:receivedData encoding:NSUTF8StringEncoding];
Am I doing something wrong creating the string?
Does anyone know of a quick color picker widget that I could grab to use in my application? I've seen one in a few different applications that has a wheel with colors, and that you tap in the center to select, but I'm not sure where to find it. Google brings up nothing. Any color picker would be fine though.
Thanks.
I'm successfully setting a date-picker with an initial date from a plist, but I see some unwanted blue values in the month, day, and year components, presumably corresponding to current date. So if today is April 18, 2010 and initial date being set is March 19, 2008, it looks like this (bold represents the blue):
January 17 2006
February 18 2007
------------------------------
March 19 2008
------------------------------
April 20 2009
May 21 2010
First question is: How do I get rid of the blue?
And second question: Ideally, how do I get it to look like this?
January 17 2006
February 18 2007
------------------------------
March 19 2008
------------------------------
April 20 2009
May 21 2010
Third question, totally unrelated and not as important: How could I have gotten the above to show in blue rather than bold? I see blue in code snippets all the time.
Matt
Hi guys,
I've just completed my first app and having tested I'm ready for submission.
However, despite numerous web searches and reading, I'm struggling to finalise the method required to enable me to have a different name on the app store to the name that appears under the app on the device home screen.
In the plist.info file there is reference to bundle display name, executable name, bundle name, bundle identifier, product name etc.
So, for example, say I would like the app store name to display as:
HELLO WORLD
and I would like the name below the icon on the device home screen to display as:
HELLO
How should I enter the data in the plist.info file to achieve the above?
Many thanks in advance for your help.
Gav.
In my source code I have some lines like NSLocalizedStringFromTable(@"Info", @"en", @"Title of this view"). When I subsequently call genstrings -o en.lproj ./Classes/*.m I would not get the expected file en.strings but Localized.strings, although I've read in the genstrings-manpage that it would generate a table.strings file from NSLocalizedStringFromTable(a, table, c) function. Am I wrong? How would I create a table.strings file then?
I know this may be a dumb question, but my background is more in c++ and managing my own memory.
I am currently cutting down every single allocation that I can from one of my games to try and reduce the frequency of garbage collection and perceived "lag", so for every variable that I create that is an Object (String and Rect for example) I am making sure that I create it before hand in my constructor and not create temporary variables in simple 10
line functions... (I hope that makes sense)
Anyways I was working though it some more tonight and I realized that I may be completely wrong about my assumption on garbage collection and primitive types (int, boolean, float) are these primitive type variables that I create in a 10 line function that gets called 20
times a second adding to my problem of garbage collection?
So a year ago every few seconds I would see a message in logcat like
GC freed 4010 objects / 484064 bytes in
101ms
Now I see that message every 15-90 seconds or so...
So to rephrase my question: Are primitive types (int, float, boolean, etc) included when seeing this message?
I have some text data in database which I have retrieved in a Cursor, and I am displaying it in a ListView. What I want to do now is that when you select click a particular row in the list its text content should be displayed in full screen and the user should be able to scroll horizontally (like scrolling between iPhone home screens) to view the contents of the Cursor.
I am currently trying to make a sectioned table like this:
Section 1:
Entry 1
Entry 2
Entry 3
Section 2:
Entry 4
Entry 5
Entry 6
Section 3:
Entry 7
Entry 8 ...
However, using this code:
Event *lists = (Event *)[eventList objectAtIndex:indexPath.row];
accessStatement = "select * from DatabaseName";
[self findEvents]; // Code that builds each object's strings from database
cell.textLabel.text = lists.name;
Section 1:
Entry 1
Entry 2
Entry 3
Section 2:
Entry 1
Entry 2
Entry 3
Section 3:
Entry 1
Entry 2 ...
It keeps on repeating itself. How do I make the index so that it continues in each section rather than restarts?
Thanks in advance.
I have some data like this :
1, 111, 2, 333, 45, 67, 322, 4445
NSArray *array = [[myData allKeys]sortedArrayUsingSelector: @selector(compare:)];
If I run this code, it sorted like this:
1, 111, 2,322, 333, 4445, 45, 67,
but I actually want this:
1, 2, 45, 67, 111, 322, 333, 4445
How can I implement it? thz u.
Okay, so I'm working on an iPhone app with a preferences-esque section where there's a base TableView, which has one section, and several rows of customized cells to hold a name and a value label. Clicking on a row brings up another View, which allows the user to pick from a list (another TableView), and select an item.
All of these TableViews are done programatically. The base TableView has a property that holds a Controller instance for each of the "pick from the list" Views. Each of the "pick from the list" views has a property called chosenValue that has the currently-selected option. I've gotten the UI to handle the didSelectRowAtIndexPath to update the chosenValue property and then "pop" the view (going back to the main TableView). But, even though the main TableView's cellForRowAtIndexPath method references the chosenValue property of the subview that's held in a property, the view doesn't update when an item is selected. In short, how can the sub-view trigger a reloadData on the parent object, after it "pops" and unloads?
Hello.
I have created new a view controller in my project (ActivateController). I have added it to the interface of the parent view controller (PrefsViewController):
#import <UIKit/UIKit.h>
#import "ActivateController.h"
@interface PrefsViewController : UIViewController <UITextFieldDelegate> {
ActivateController *activateController;
}
-(IBAction)pressedActivate;
@property(nonatomic,retain) IBOutlet ActivateController *activateController;
@end
I have also added it to parent's controller nib (and changed it type to ActivateController), and connected it to IBOutlet ActivateController.
But still, when I perform (on pressedActivate):
[self.navigationController pushViewController:activateController animated:YES];
Nothing happens. I have done it successfully many times before. What might be wrong?
P.S. pressedActivate is executed for sure (I used NSLog to check).
I am using a predicate to find an object in core data. I can successfully find the object that I want, but I need to also get the indexPath of that object, so that I can push a details view in for that object. Currently I have the following code for getting my object:
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setEntity:[NSEntityDescription entityForName:@"Ride" inManagedObjectContext:self.managedObjectContext]];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"title = %@ AND addressFull = %@", view.annotation.title, view.annotation.subtitle];
[fetchRequest setPredicate:predicate];
NSMutableArray *sortDescriptors = [NSMutableArray array];
[sortDescriptors addObject:[[[NSSortDescriptor alloc] initWithKey:@"title" ascending:YES] autorelease]];
[sortDescriptors addObject:[[[NSSortDescriptor alloc] initWithKey:@"addressFull" ascending:YES] autorelease]];
[fetchRequest setSortDescriptors:sortDescriptors];
[fetchRequest setReturnsObjectsAsFaults:NO];
[fetchRequest setPropertiesToFetch:[NSArray arrayWithObjects:@"title", @"addressFull", nil]];
NSError *error = nil;
NSArray *fetchedItems = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];
// Sohow what record we returned
NSLog(@"%@",[fetchedItems objectAtIndex:0]);
So, I can correctly get my object into an array. But how do I translate that object into an indexPath?
I have a cameraoverlayview that allocates a UINavigationBar to the top of the screen like this -
CGRect navbarFrame = CGRectMake(0, 0, 320, 44);
navigationBar = [[UINavigationBar alloc] initWithFrame:navbarFrame];
navigationBar.delegate = self;
Now I want to add a UIBarButtonItem as the left button to the navigation bar, but the standard navigationbar.leftitem doesn't work. So I tried doing this -
closebutton = [[UIBarButtonItem alloc] initWithTitle:closebuttontext style:UIBarButtonItemStylePlain target:self action:@selector(close)];
navigationBar.topItem.leftBarButtonItem = closebutton;
But it doesn't work either. Can anyone point me in the right direction? As far as the navigation bar loading up correctly in the cameraoverlayview, it works 100%.
If I try to do actions over menuItems but the actions are not running as expected.
I think code below should make the menuItem rotate by 90 degrees but when I run it, the menuItem translates from its coordinates to another coordinate then returns to its original coordinate. The complete translation takes 3 seconds.
What I need is for the menuItem to rotate by 90 degrees in place within a 3 seconds duration. Please explain where I have done wrong?
CCMenuItemImage *targetE;//Globally declared
CCMenu *menu;//Globally declared
-(id)init
{
if( (self = [super init]) )
{
isTouchEnabled = YES;
CGSize windowSize = [[CCDirector sharedDirector] winSize];
targetE = [CCMenuItemImage itemFromNormalImage:@"grossinis_sister1.png" selectedImage:@"grossinis_sister1.png" target:self selector:@selector(touch:)];
menu = [CCMenu menuWithItems:targetE,nil];
id action4 = [CCRotateBy actionWithDuration:3.0 angle:90];
[menu runAction: [CCSequence actions: action4, nil]];
menu.position = ccp(windowSize.width/2 + 200, windowSize.height/2);
[self addChild: menu z:10];
}
return self;
}
@end
Thank You.
When I add libiphone-exif.a to snapandrun in objectiveflickr I get this error:
".objc_class_name_EXFJpeg", referenced from:
literal-pointer@__OBJC@__cls_refs@EXFJpeg in SnapAndRunViewController.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
I do not know what this means, I follow the guide to add it, add all of the .h files and the libiphone-exif.a
Is there something special I have to do?
Hi,
first of all - I am quite new to iPhone App development (3 months). I am working for a software company that offers a content management system. Our customers are for the main part publishing houses for magazines. They use our software to write articles to their homepages. Now we want to offer iPhone Applications to go with our cms. What I have accomplished so far is an RSS reader that shows newly published articles in a list view. The user selects one article and is redirected to a specially formatted detail view of this article. The next step is to add offline reading capabilities. I have searched the internet up and down but couldn't find anything like a best practice for that. I get it that there are two possibilities in general:
Store the contents of the uiwebview locally on the iPhone/iPad (including css, images, js and so on). There would be the need to rework the basic html to use the downloaded css, images and js. Also I would have to somehow edit hyperlinks to following pages in multipage articles - Sounds like a lot of work ;)
Create a PDF on the server side and download that to the mobile device. Rework the RSS Source to point to the locally saved pdf instead of the website on the server.
My question is - what is the better way to go? Are there any downsides for either of the possibilities? Are there other (simple ;)) ways to implement offline reading features? Are there possibly any howto's that I could've missed?
Thanks y'all!
I want to create a triangle using Quartz 2D functions. The 3 edges of the triangle should be in different colors. I am able to create the triangle but not able to set the color of each edge or subpath separately. Any suggestions or sample code are much appreciated.
i looked at the example from the iphone dev: http://developer.apple.com/iphone/library/samplecode/Scrolling/index.html
everything looks cool except that for 5 image they set the "const NSUInteger kNumImages = 5;"
what happens is that what if i have 1000 images?and i wan to view it without having to change the number everytime?also if i will to set the number to 1000 and i have only 10 images then in the simulator the user can scroll "blank view" till it reaches count 1000!
help please..thanks
Hi all
I developing a Ipad application I am trying to use Webview but not able to open the URL in webview I am using following code
NSURL *fileURL = [[[NSURL alloc] initWithString:@"http://www.google.com/"] autorelease];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:fileURL];
[webview loadRequest:requestObj];
this code working well for Iphone app not not working for Ipad app. Is anything wrong.
Thanks Amit Battan
If I physically slide out the keyboard on my Moto Droid A855, it crashes my test app with the stack trace pasted below. I don't understand why?
Also, if I start my app with the keyboard out, my app crashes immediately on startup.
The app consists of an activity, which contains a viewflipper as the main view layout. The viewflipper contains two linearlayouts...
Stack trace:
06-10 21:10:17.652 E/AndroidRuntime( 3785): Uncaught handler: thread main exiting due to uncaught exception
06-10 21:10:17.668 E/AndroidRuntime( 3785): java.lang.IllegalArgumentException: Receiver not registered: android.widget.ViewFlipper$1@447af0b8
06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.app.ActivityThread$PackageInfo.forgetReceiverDispatcher(ActivityThread.java:667)
06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.app.ApplicationContext.unregisterReceiver(ApplicationContext.java:747)
06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.content.ContextWrapper.unregisterReceiver(ContextWrapper.java:321)
06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.widget.ViewFlipper.onDetachedFromWindow(ViewFlipper.java:104)
06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.view.View.dispatchDetachedFromWindow(View.java:5835)
06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:1076)
06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:1074)
06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:1074)
06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:1074)
06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.view.ViewRoot.dispatchDetachedFromWindow(ViewRoot.java:1570)
06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.view.ViewRoot.doDie(ViewRoot.java:2556)
06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.view.ViewRoot.die(ViewRoot.java:2526)
06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.view.WindowManagerImpl.removeViewImmediate(WindowManagerImpl.java:218)
06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.view.Window$LocalWindowManager.removeViewImmediate(Window.java:436)
06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3498)
06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3599)
06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.app.ActivityThread.access$2300(ActivityThread.java:119)
06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1867)
06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.os.Handler.dispatchMessage(Handler.java:99)
06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.os.Looper.loop(Looper.java:123)
06-10 21:10:17.668 E/AndroidRuntime( 3785): at android.app.ActivityThread.main(ActivityThread.java:4363)
06-10 21:10:17.668 E/AndroidRuntime( 3785): at java.lang.reflect.Method.invokeNative(Native Method)
06-10 21:10:17.668 E/AndroidRuntime( 3785): at java.lang.reflect.Method.invoke(Method.java:521)
06-10 21:10:17.668 E/AndroidRuntime( 3785): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
06-10 21:10:17.668 E/AndroidRuntime( 3785): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
06-10 21:10:17.668 E/AndroidRuntime( 3785): at dalvik.system.NativeStart.main(Native Method)
06-10 21:10:17.684 I/Process ( 1017): Sending signal. PID: 3785 SIG: 3