Xcode: Über Code einen View aufrufen

13Antworten
  1. #1
    Avatar von electrofreak
    electrofreak ist offline
    Themen Starter

    Title
    Benutzer
    seit
    31.01.2013
    Beiträge
    391

    Standard Xcode-Fragen

    Hallo

    Könnte mir jemand sagen, wie ich über bestimmten Objektive-C Code einen View öffne. Durch einen Button mit Segues weiß ich bereits, doch über normalen Code weiß ich nicht Bescheid.


    LG
    electrofreak

  2. #2
    Avatar von telecaster95
    telecaster95 ist offline

    Title
    Benutzer
    seit
    11.04.2011
    Ort
    /home/tele
    Beiträge
    1.617

    Standard

    Wenn du das ganze mit einem UINavigationcontroller machst, sollte es so aussehen:
    Code:
    UIViewController *viewController = [[UIViewController alloc] init];
        [self.navigationController pushViewController:viewController animated:YES];
    Dem viewController kannst du vor dem Push auch noch verschiedene Parameter übergeben, wie Hintergrundfarbe, Titel, etc. jenachdem was du programmiert hast. Die Klasse UIViewController kann auch eine Klasse von dir sein, vorausgesetzt diese erbt von UIViewController. Dann kannst du dir deinen eigenen View programmieren.

  3. #3
    Avatar von electrofreak
    electrofreak ist offline
    Themen Starter

    Title
    Benutzer
    seit
    31.01.2013
    Beiträge
    391

    Standard

    Okay, vielen Dank!

  4. #4
    Avatar von electrofreak
    electrofreak ist offline
    Themen Starter

    Title
    Benutzer
    seit
    31.01.2013
    Beiträge
    391

    Standard

    Hallo,

    ich habe da noch 2 Fragen:

    Am meisten gibt es ja Buttons, die in der .m-datei eine Action haben. Leider ist es bei mir immer so, dass, wenn ich diesen Button drücke, die Konsole eine Exception wirft und die Main-Datei das Signal SIGABRT zeigt. Im Simulator bleibt das Programm einfach stehen (die App stürzt nicht ab!).

    Zitat Zitat von Konsole
    2013-07-29 16:46:38.194 2[6708:c07] -[ViewController link:]: unrecognized selector sent to instance 0x7542550
    2013-07-29 16:46:38.196 2[6708:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[ViewController link:]: unrecognized selector sent to instance 0x7542550'
    *** First throw call stack:
    (0x1d46012 0x10d1e7e 0x1dd14bd 0x1d35bbc 0x1d3594e 0x10e5705 0x192c0 0x19258 0xda021 0xda57f 0xd96e8 0x48cef 0x48f02 0x26d4a 0x18698 0x1ca1df9 0x1ca1ad0 0x1cbbbf5 0x1cbb962 0x1cecbb6 0x1cebf44 0x1cebe1b 0x1ca07e3 0x1ca0668 0x15ffc 0x20dd 0x2005)
    libc++abi.dylib: terminate called throwing an exception
    (lldb)
    Dann die 2:

    Ich habe eine App mit einer Tabbed-Application gemacht und alles nach dieser Anleitung gemacht (aber nach der neuen Xcode Version angepasst):
    siehe hier.


    Hoffe mir kann man helfen
    electrofrack

  5. #5
    Avatar von telecaster95
    telecaster95 ist offline

    Title
    Benutzer
    seit
    11.04.2011
    Ort
    /home/tele
    Beiträge
    1.617

    Standard

    Zu 1:
    In der Konsole steht was von einem ungültigen Parameter. Schreib mal deine Code hierhin.

    Zu 2:
    Wo ist denn deine Frage?

  6. #6
    Avatar von electrofreak
    electrofreak ist offline
    Themen Starter

    Title
    Benutzer
    seit
    31.01.2013
    Beiträge
    391

    Standard

    Oh Sorry. Da stand ich wohl'm bisschen auf dem Schlauch. Ich hab alles nach dieser Anleitung gemacht, aber ich sehe keine Anzeige in der App.


    Zu den Codes:

    Trage ich gleich nach, bin leider gerade nicht am Mac.

  7. #7
    Avatar von telecaster95
    telecaster95 ist offline

    Title
    Benutzer
    seit
    11.04.2011
    Ort
    /home/tele
    Beiträge
    1.617

    Standard

    Klar siehst du nichts, in dem Tutorial steht auch nicht das du die Delegates und den Datasource setzt. Das musst du aber machen:
    Code:
    [tableView setDelegate:self];
    [tableView setDataSource:self];
    Mach das und es sollte funktionieren

  8. #8
    Avatar von electrofreak
    electrofreak ist offline
    Themen Starter

    Title
    Benutzer
    seit
    31.01.2013
    Beiträge
    391

    Standard

    In welcher Methode?

    ===Codes===

    Storyboard: siehe Anhang
    linker View Controller: Klasse = ViewController
    rechter View Controller: Klasse = webView

    ViewController.h
    Code:
    //
    //  ViewController.h
    //  
    //
    //  Created by electrofreak on 23.07.13.
    //  Copyright (c) 2013 electrofreak. All rights reserved.
    //
    #import <UIKit/UIKit.h>
    @interface ViewController : UIViewController
    @property (weak, nonatomic) IBOutlet UITextField *username;
    @property (weak, nonatomic) IBOutlet UITextField *password;
    @property (weak, nonatomic) IBOutlet UILabel *status;
    @property (weak, nonatomic) IBOutlet UIButton *ready;
    - (IBAction)ready:(id)sender;
    @property (weak, nonatomic) IBOutlet UIButton *link;
    - (IBAction)nokeyboard:(id)sender;
    - (IBAction)nk:(id)sender;
    @end
    ViewController.m
    Code:
    //
    //  ViewController.m
    //  2
    //
    //  Created by electrofreak on 23.07.13.
    //  Copyright (c) 2013 electrofreak. All rights reserved.
    //
    #import "ViewController.h"
    @interface ViewController ()
    @end
    @implementation ViewController
    - (void)viewDidLoad
    {
        [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
        _link.hidden = YES;
        _status.text = @"Status: Unauthentifiziert";
    }
    - (void)didReceiveMemoryWarning
    {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    - (IBAction)ready:(id)sender {
        //Check what user types
        if (([_username.text isEqualToString:@"//username"]) && ([_password.text isEqualToString:@"//password"])) {
            _status.text = @"Status: Authentifiziert";
            _link.hidden = NO;
        }
    //Von diesen ifs folgen weitere, machmal mit Sonderzeichen (ú,? usw.)
    }
    - (IBAction)nokeyboard:(id)sender {
        [sender resignFirstResponder];
    }
    - (IBAction)nk:(id)sender {
        [sender resignFirstResponder];
    }
    @end
    webView.h
    Code:
    //
    //  webView.h
    //  2
    //
    //  Created by electrofreak on 29.07.13.
    //  Copyright (c) 2013 electrofreak. All rights reserved.
    //
    #import <UIKit/UIKit.h>
    @interface webView : UIViewController
    @property (weak, nonatomic) IBOutlet UIWebView *webView;
    @end
    webView.m
    Code:
    //
    //  webView.m
    //  2
    //
    //  Created by electrofreak on 29.07.13.
    //  Copyright (c) 2013 electrofreak. All rights reserved.
    //
    #import "webView.h"
    @interface webView ()
    @end
    @implementation webView
    - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
    {
        self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
        if (self) {
            // Custom initialization
        }
        return self;
    }
    - (void)viewDidLoad
    {
        [super viewDidLoad];
    // Do any additional setup after loading the view.
        [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"//URL versteckt!"]]];
    }
    - (void)didReceiveMemoryWarning
    {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    @end

    edit: Scheint so, als würde es an dem verstecktem URL liegen. Direkt beim Laden erscheint so ein Pop-Up mit einem Benutzernamen und Passwort-Eingabefeld, vielleicht liegt's daran? Ich hab mal so'ne ähnliche App gebaut, bei der im linken weiß ist, wenn die Site aufgerufen wird, vielleicht ein Fehler? Bzw. eigentlich müsste ich ja, für den Anfang zumindest, nur wissen, was Signal SIGABRT ist.
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken Klicke auf die Grafik für eine größere Ansicht 
Name:Bildschirmfoto 2013-07-30 um 14.49.46.png 
Hits:93 
Größe:417,8 KB 
ID:3278  


  9. #9
    Avatar von electrofreak
    electrofreak ist offline
    Themen Starter

    Title
    Benutzer
    seit
    31.01.2013
    Beiträge
    391

    Standard

    Jetzt, nach Umänderung der App gibt es folgende Ausgabe:

    2013-07-31 16:37:55.198 2[11344:c07] *** Terminating app due to uncaught exception 'NSGenericException', reason: 'Push segues can only be used when the source controller is managed by an instance of UINavigationController.'
    *** First throw call stack:
    (0x1d47012 0x10d2e7e 0x46cf31 0x45eb99 0x45ec14 0x10e6705 0x1a2c0 0x1a258 0xdb021 0xdb57f 0xda6e8 0x49cef 0x49f02 0x27d4a 0x19698 0x1ca2df9 0x1ca2ad0 0x1cbcbf5 0x1cbc962 0x1cedbb6 0x1cecf44 0x1cece1b 0x1ca17e3 0x1ca1668 0x16ffc 0x28ed 0x2815)
    libc++abi.dylib: terminate called throwing an exception
    (lldb)

    edit: Nach Übersetzung umgeädert auf "modal", dann funkt alles, der URL wird aber falsch angezeigt (weiß, obwohl wie gesagt ein Alert erscheinen sollte). What should I do ?

  10. #10
    Avatar von telecaster95
    telecaster95 ist offline

    Title
    Benutzer
    seit
    11.04.2011
    Ort
    /home/tele
    Beiträge
    1.617

    Standard

    Also das mit der Tabelle und den Delegates, das muss in die ViewDidLoad.

    Zu der anderen App:
    Code:
    [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"//URL versteckt!"]]];
    Ruft im WebView die URL "\\URL versteckt!" auf. Klar ist das weiß, die Adresse existier ja auch nicht. Probier mal sowas wie "www.eforum.de", das sollte klappen

  11. #11
    Avatar von electrofreak
    electrofreak ist offline
    Themen Starter

    Title
    Benutzer
    seit
    31.01.2013
    Beiträge
    391

    Standard

    Ne, in der echten App ist da ja ein URL. Und trotzdem ist es weiß...

    edit:
    Ich habe den URL gerade per Safari genauso aufgerufen, wie er im Code steht und ich kam definitiv auf die richtige Seite.
    Was allerdings anzumerken ist, ist folgendes:
    Nehme ich diesen Pop-Up raus, geschieht dies nicht. Leider wäre es für mich aber wichtig, diesen drinzulassen. Wenn da garnichts geht, muss ich ihn wohl rausnehmen.

    Andere Frage: Wie kann ich einen String nach einem bestimmten Teil durchsuchen, beispielsweise:

    Code:
    if (_textfield.text == @"%s@", @"jumptoworkspace") {//%s@ = Substring
    NSLog (@"Textfeld enthält jumptoworkspace"); //Kriege grade keinen Tab rein
    }
    //Hoffe, du konntest so verstehen, was ich meine.
    Hast du eigentlich Apps im AppStore, wenn ja, welche?

  12. #12
    Avatar von telecaster95
    telecaster95 ist offline

    Title
    Benutzer
    seit
    11.04.2011
    Ort
    /home/tele
    Beiträge
    1.617

    Standard

    Hast du denn im Storyboard den WebView auch mit der Variable verbunden?
    Zu deinem Substring:
    NSString *string = @"hallo Welt";
    if ([string rangeOfString:@"Welt"].location == NSNotFound) {
    NSLog(@"Enthält kein Welt");
    } else {
    NSLog(@"Enthält Welt");
    }

  13. #13
    Avatar von electrofreak
    electrofreak ist offline
    Themen Starter

    Title
    Benutzer
    seit
    31.01.2013
    Beiträge
    391

    Standard

    Ja. Ich mach das immer mit CTRL-Ziehen, ist am einfachsten. Danach gucke ich sogar auch nochmal im Connections Inspector nach.

    LG

  14. #14
    Avatar von electrofreak
    electrofreak ist offline
    Themen Starter

    Title
    Benutzer
    seit
    31.01.2013
    Beiträge
    391

    Standard @all

    Wahrscheinlich ist der entsprechende HTML-Code einfach nicht in der Klasse UIWebView integriert. Habe jetzt einfach dementsprechend den Code rausgenommen, sollte nun also auch so gehen.


    LG
    electrofreak

Ähnliche Themen

  1. xCode Framework für MS SQL BI

    Von telecaster95 im Forum Anwendersoftware
    Antworten: 2
    Letzter Beitrag: 23.07.2012, 21:39
  2. Ist es möglich über eine Domain einen server zu gründen?

    Von Jimmy93432 im Forum Homepage-Webdesign
    Antworten: 11
    Letzter Beitrag: 07.12.2011, 22:57
  3. Gib dem User über dir einen Namen

    Von Bali im Forum Off-Topic
    Antworten: 57
    Letzter Beitrag: 24.01.2010, 07:38
  4. Powerpoint view

    Von schmidt im Forum Office und Dokumente
    Antworten: 1
    Letzter Beitrag: 28.04.2009, 22:37
  5. Antworten: 3
    Letzter Beitrag: 09.04.2009, 20:31
Diese Seite benutzt Cookies Durch die weitere Nutzung der Seite stimmen Sie der Verwendung von Cookies zu. Infos zum Datenschutz