iPhone Silikon Case „ultradünn“ für iPhone 3G & iPhone 3G S – 3gstore.de

Nach einigen Beiträgen über iPhone Programmierung nun etwas über Zubehör: iPhone Silikon Case „ultradünn“ für iPhone 3G & iPhone 3G S

iPhone

iPhone quelle: 3gstore.de unter der CC-BY Liz.

Ein nettes Silikon Case, was gerade in Bezug zu den häufigen Case Rissen relevant erscheint. So hat man mehr vom iPhone. Daher: Klasse Sache! In diesem Zuge auch uf die Aktion des 3G Stores hingewiesen:

http://www.iphoneohnevertrag.de/2009/09/16/iphone-zubehoer-geschenkt/ Der Store verschenkt aktuell Zubehör anlässlich des ersten Gebutstages.

Herzlichen Glückwunsch

iPhone Keyboard ausblenden nach Eingabe

iPhone Tastatur

iPhone Tastatur

Wenn man im iPhone SDK ein UITextField hat, und daraf klickt, erscheint die Tastatur. Per Default verschwindet sie jedoch nicht wnen man auf Return drückt. Die folgenden Zeilen ermöglichen dieses Feature.

In der Header File (*.h file):

[…]

-(IBAction)textFieldDoneEditing:(id)sender;

[…]

In der Implementierung (*.m File):

[…]

(IBAction)textFieldDoneEditing:(id)sender{
[sender resignFirstResponder];
}

[…]

Dazu noch im Interface Builder das Eingabefeld auswählen, im Object Inspector in den Connection Tab wechseln und eine Linie von „Did End on Exit“ zu „File Owner“ ziehen und dort die oben aufgeführte Action auswählen.

getdropbox.com Redesign in neuem Gewand

getdropbox.com

getdropbox.com

Der hier bereits erwähnte Service getdropbox.com hat seinen Webauftritt überarbeitet und auf ein neues Level gehoben.

Hier die Neuerungen:

Some new features:
– Schöner ( 🙂 )

– Multi-select im file browser
– Echte größen Operationen (mit FortschrittsAnzeige für große Dateien)
– Zip Dateien aus Ordnern / Auswahl von Dateien direkt herunterladen
– Suche im File Browser
– Verbesserungen in der Navigation
– GMail style keyboard Abkürzungen
– Mobile version der site (für nicht iPhone Nutzer)
– UI / Benutzungs Verbesserungen
– Neuer „Getting Started tab“ (wer ihn aufruft bekommt Extra Space geschenkt!)

Alles in allem ein solides Update eines sehr praktischen Dienstes.

Hier noch ein Ref Link für die Benutzer, die getdropbox bis dato noch nicht kannten: Klick mich

Hier eine Beschreibung, wie man Truecrypt und dropbox koppeln kann, um mobile Verschlüsselung zu erreichen.

NSMutableArray size count numberofitems

NSMutableArray count

NSMutableArray count

Da bei einem NSMutableArray keine size Operation funktioniert, aber die Anzahl der Elemente wichtig ist nutzt man die Operation count.

NSString *firstObject = @“firstObject“;
NSString *secondObject = @“secondObject“;

NSMutableArray *testArray = [[NSMutableArray alloc]init];
[testArray addObject:firstObject];
[testArray addObject:secondObject];

NSLog(@“Size des Arrays: %i“, [testArray count]);

Resultat eine Log Ausgabe:

2009-09-09 12:27:08.838 XML[56422:20b] Size des Arrays: 2

NSMutableArray LogAusgabe

NSMutableArray LogAusgabe

XCode Objc breakpoint bei exception

Thread XCode

Thread XCode

Wer mit Java gearbeitet hat, ist gewohnt, exceptions zu catchen, verarbeiten oder zu throwen. In XCode muss man sich da etwas umstellen. Exceptions werden bei Laufzeit geworfen und eine Möglichkeit, auf diese zu reagieren ist auf den ersten Blick nicht vorgesehen.

Wenn nun eine Exception bei einem Projekt mit mehreren tausend Zeilen Code auftritt bietet der Debugger nur wenig Hilfe die entsprechende Stelle zu finden. Die Konsolenausgabe hilft nur teilweise. Viel schöner wäre doch ein automatischer Breakpoint bei der fehlerhaften Stelle. Und genau dies ist Möglich!

Man öffne den Debugger, Klicke auf Breakpoints und füge dort einen eigenen Breakpoint mit dem Namen objc_exception_throw und der Location libobjc.A.dylib. Fertig!

XCode Breakpoints

XCode Breakpoints

XCode automatischer Breakpoint

XCode automatischer Breakpoint

Ab jetzt wird automatisch ein Breakpoint dort gesetzt, wo eine Exception geworfen wird.

trim NSString iPhone objective C

trimmed string obj c

trimmed string obj c

Aus anderen Programmiersprachen kennt man den trim(); Befehl, der folgendes tut:

trimEntfernt Whitespaces (oder andere Zeichen) am Anfang und Ende eines Strings

In ObjC ist eine solche trim Funktionalität z.B: sinnvoll wenn man eine XML parsen möchte und in der XML Leerzeichen vor dem eigentlichen String sind.

Folgende Anweisung entfernt die störenden Leerzeichen (whitspaces):

NSString *trimmedString = [StringWithWhitespaces stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

Resultat ist ein NSString, der ohne Probleme genutzt werden kann.

Eigenes TabBar Objekt mit ViewController

Um in eine TabBarNavigation einer iPhone Anwendung ein neues TabBarNavi-Item hinzuzufügen, welches einen eigenen Controller (UIViewController) und eine eigene View hat sind folgende Schritte notwendig:

  1. Klasse für ViewController erstellen (Bsp.: MyTabItemViewController) Typ der Klasse: UIViewController
  2. Neue View Nib / XIB File erstellen (Bsp.: MyTabItemView.xib)
  3. In MyView.xib den Typ des File Owners auf den Controller umstellen (Bsp. MyTabItemViewController)
  4. In MyView.xib eine Verbindung zwischen FileOwner und der View herstellen vom Typ view
  5. Implementierung MyTabItemViewController (siehe unten A)
  6. Implementierung in AppDelegate (siehe unten B)

A: Implementierung MyViewController:


//
//  MyTabItemViewController.m
//  TabBar
//
//  Created by Alexander Jäger on 04.09.09.
//  Copyright 2009 mediajaeger.de. All rights reserved.
//
#import "MyTabItemViewController.h"


@implementation MyTabItemViewController


// Override initWithNibName:bundle: to load the view using a nib file then perform additional customization that is not appropriate for viewDidLoad.
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
// Custom initialization
self.title = @"MyTabItemView";

self.tabBarItem.image = [UIImage imageNamed:@"all.png"];
}
return self;
}

- (void)dealloc {
[super dealloc];
}

@end

A: Implementierung AppDelegate:


- (void)applicationDidFinishLaunching:(UIApplication *)application {
[...]
tabBarController = [[UITabBarController alloc] init];
MyTabItemViewController *aMyTabItemViewController = [[MyTabItemViewController alloc] initWithNibName:@"MyTabItem" bundle:nil];
// other ViewController
[...]
// add the Controller to the RootController
tabBarController.viewControllers = [NSArray arrayWithObjects:firstViewController, secondViewController,aMyTabItemViewController, nil];
[...]
// release
[aMyTabItemViewController release];
[...]

tabBarController Programm stürzt mit EXC_BAD_ACCESS ab

Wer ein iPhone Programm mit einer tabBar Navigation über einen tabBarController schreibt, kann unter Umständen das Problem erhalten, dass das Programm ohne ersichtlichen Grund mit EXC_BAD_ACCESS terminiert.

Eine mögliche Ursache ist der Array aus ViewControllern, der mit Inhalten gefüllt wird:

tabBarController.viewControllers = [NSArray arrayWithObjects:firstViewController, secondViewController,thirdViewController];

Dieser Array zeigt den Fehler, denn um eine korrekte Darstellung zu erhalten, muss der Array mit nil terminiert werden:

tabBarController.viewControllers = [NSArray arrayWithObjects:firstViewController, secondViewController,thirdViewController, nil];

XCode Auto Vervollständigung Code completion

XCode Code Completion Liste

Wer mit XCode arbeitet kennt die Code Completion, beim tippen wird das wahrscheinlichste in grau angezeigt und kann mit ENTER bestätigt werden. Das erspart eine Menge Arbeit.

Was jedoch tun, wenn man nicht genau weiß, welche Methoden oder Properties ein Objekt / Instanz hat?

XCode bietet dafür eine Lösung, die von vielen anderen Frameworks bekannt ist: eine Darstellung als Liste!

Diese Liste erhällt man durch ESC beim tippen und sieht dann wie oben gezeigt aus. Nun noch das gewünschte Element der Liste auswählen, fertig.