Odpowiedz na ten temat
Strona 1 z 2 1 2 OstatniaOstatnia
Pokaż wyniki od 1 do 10 z 13

  1. Dołączył
    Jul 2007
    Postów
    70

    Cytuj | #1

    Witam,

    dopiero zaczynam zabawe z programowanie na iPada. Napotkalem jednak na problem, ktorego rozwiazania niemoge odnalesc. Mam takie okna jak FirstView i SecondView. Potrzebuje zrobic mozliwosc przekazywania zmiennych miedzy tymi dwoma widokami. Podejrzewam, ze jest to naprawde cos bardzo prostego jednak niemoge poradzic sobie ze znalezieniem rozwiazania.


  2. Avatar kamil.burczyk
    Dołączył
    Jan 2011
    Skąd
    Kraków
    Postów
    46

    Cytuj | #2

    Miałem podobny problem i u siebie rozwiązałem go tworząc globalny singleton z atrybutem typu NSDictionary i do niego wrzucam sobie referencje do współdzielonych obiektów (kluczami są Stringi). Jeśli jest jakieś prostsze rozwiązanie to też chętnie bym się o nim dowiedział.
    Komputer: MacBook Pro 15" Late 2007
    Telefon: iPhone 4


  3. Dołączył
    Apr 2011
    Postów
    66

    Cytuj | #3

    Jak w programowanie iOS bawię się od niedawna ale robię to tak, że w ViewController.m dodaję sobie np. metodę:
    Kod:
    -(id) initWithManagedObjectContext:(NSManagedObjectContext *) managedObjectContextIn
    {
        if ([self init]) {
            (...)
            self.managedObjectContext = managedObjectContextIn;
        }
        return self;
    }
    i potem to tylko wołam:
    Kod:
    MyViewController *myViewController;
        myViewController = [[MyViewController alloc] initWithManagedObjectContext:context];
    Jeżeli jest lepszy sposób to sam chętnie poznam

  4. Avatar kamil.burczyk
    Dołączył
    Jan 2011
    Skąd
    Kraków
    Postów
    46

    Cytuj | #4

    @PrzemekM72 tylko wtedy musisz sam tworzyć kontroler, rezygnując z podpinania go w Interface Builderze, tak ?
    Komputer: MacBook Pro 15" Late 2007
    Telefon: iPhone 4


  5. Dołączył
    Jul 2007
    Postów
    70

    Cytuj | #5

    Kamil, moglbys mi pokazac jakis prosty przyklad takiego singletona i metody jak do niego sie dostajesz ?

  6. Avatar kamil.burczyk
    Dołączył
    Jan 2011
    Skąd
    Kraków
    Postów
    46

    Cytuj | #6

    ObjectContainer.h

    Kod:
    #import <Foundation/Foundation.h>
    
    
    @interface ObjectContainer : NSObject {
        NSMutableDictionary *dictionary;
    }
    
    + (void)initialize;
    + (ObjectContainer*) getInstance;
    
    - (id) valueForKey:(NSString*) key;
    - (void) setValue:(id) value forKey:(NSString* ) key;
    
    @end
    ObjectContainer.m

    Kod:
    #import "ObjectContainer.h"
    
    
    @implementation ObjectContainer
    
    static ObjectContainer *objectContainer;
    
    + (void)initialize{
        static BOOL initialized = NO;
        if(!initialized){
            initialized = YES;
            objectContainer = [[ObjectContainer alloc] init];
        }
    }
    
    - (id)init{
        self = [super init];
        if (self) {
            dictionary = [[NSMutableDictionary alloc] init];
        }
        return self;
    }
    
    + (ObjectContainer*) getInstance{
        return objectContainer;
    }
    
    - (id) valueForKey:(NSString*) key{
        return [dictionary valueForKey:key];
    }
    
    - (void) setValue:(id) value forKey:(NSString* ) key{
        [dictionary setValue:value forKey:key];
    //    NSLog(@"ustawilem: %@", [dictionary valueForKey:key]);
    }
    
    - (void)dealloc{
        [dictionary release];
        [objectContainer release];
        [super dealloc];
    }
    
    @end
    Wyczytałem, że metoda initialize jest wywoływana tylko raz przy tworzeniu obiektu, więc być może nie ma potrzeby, aby ObjectContainer był statyczny, ale ta wersja działa na 100% a jak to pisałem to nie miałem czasu się bawić

    Wywołania z dowolnego pliku:

    Kod:
    #import "ObjectContainer.h"
    
    [[ObjectContainer getInstance] setValue:@"Ala to ładna dziewczynka" forKey:@"ala"]; //ustawienie wartości
    
    NSString *tmp = [[ObjectContainer getInstance] valueForKey:@"ala"]; //odczytanie wartości
    Zaleta jest taka że możemy z każdego pliku wstawić dowolną referencję i odczytać w dowolnym innym miejscu, wadą jest to, że musimy ogarnąć co mamy pod jakim stringiem.
    Komputer: MacBook Pro 15" Late 2007
    Telefon: iPhone 4


  7. Dołączył
    Jul 2007
    Postów
    70

    Cytuj | #7

    Wielkie dzieki Kamil. Wlasnie takiego rozwiazania szukalem. Potrzebowalem wlasnie czegos do gromadzenia danych miedzy roznymi widokami co umozliwiloby mi na koncu latwo wyswietlic zebrane dane

  8. Avatar kamil.burczyk
    Dołączył
    Jan 2011
    Skąd
    Kraków
    Postów
    46

    Cytuj | #8

    Nie ma za co
    Komputer: MacBook Pro 15" Late 2007
    Telefon: iPhone 4

  9. Avatar danteusz
    Dołączył
    Jun 2009
    Skąd
    Wrocław-Psie Pole, Wroclaw, Poland, Poland
    Postów
    450

    Cytuj | #9

    Najłatwiej dodać potrzebne parametry do appDelegate, potem zrobić do niego referencję:
    YourAppDelegate *appDelegate = (YourAppDelegate *)[[UIApplication sharedApplication] delegate];
    i wrzucać do niego wszystkie dane
    appDelegate.zmienna = zmienna;
    Komputer: Macbook Pro '11 15 cali
    Telefon: iPhone 3GS


  10. Dołączył
    Apr 2011
    Postów
    66

    Cytat Napisał kamil.burczyk Zobacz post
    @PrzemekM72 tylko wtedy musisz sam tworzyć kontroler, rezygnując z podpinania go w Interface Builderze, tak ?
    Tak też robię. Lubię mieć jak najwięcej pod kontrolą i wiedzieć gdzie co jest
    Ale z chęcią spróbuję innych sposobów. Szczególnie sposób danteusza wydaje mi się ciekawy i "czysty".

Odpowiedz na ten temat
Strona 1 z 2 1 2 OstatniaOstatnia