Odpowiedz na ten temat
Pokaż wyniki od 1 do 3 z 3
  1. hop
    Mężczyzna hop jest offline

    Dołączył
    Dec 2008
    Skąd
    Mińsk Maz
    Postów
    41

    Cytuj | #1

    Witam

    Mam problem.Chcę napisać prosty program korzystając ze środowiska XCode 4.Ma być małe okienko a na nim 3 rzeczy:
    1) NSTextField
    2) NSTableView
    3) Button

    Jest to zadanie z książki AArona Hillegasa Cocoa Programming...
    Chodzi o to że w okienko 1) wpisuję tekst naciskam 3) i tekst powinien się pojawić na ostatnim miejscu w tabeli 2) i tak dalej dodajemy naciskamy tekst ląduje w tabelce.Problem w tym że nic nie ląduje.Widać że po naciśnięciu 3) kilkukrotnym tabelka się zmienia bo pojawia się slider z boku i zmniejsza się.

    Oto moje klasy:
    1a) DSAppDelegate - delegat aplikacji
    2a) MyClass - table view data source (żródło dla tabelki)

    powiązania są następujące:

    MyClass
    |
    |--pole-->1) Text Field
    |--tabelka-->2) Table View
    |<--target--3) button
    |<--datasource---2)Tabelka

    MyClass header:
    Kod:
    //
    //  MyClass.h
    //  DS
    //
    //  Created by APPLE on 11-05-22.
    //  Copyright 2011 __MyCompanyName__. All rights reserved.
    //
    
    #import Cocoa/Cocoa.h 
    
    
    @interface MyClass : NSObject NSTableViewDataSource
    {
    @private
        IBOutlet NSTextField *pole;
        IBOutlet NSTableView *tabelka;
        NSMutableArray *items;
    }
    - (IBAction)dodajNowy:(id)sender;
    -(NSInteger)numberOfRowsInTableView:(NSTableView *)tableView;
    -(id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row;
    
    
    @end
    MyClass implementacja:
    Kod:
    //
    //  MyClass.m
    //  DS
    //
    //  Created by APPLE on 11-05-22.
    //  Copyright 2011 __MyCompanyName__. All rights reserved.
    //
    
    #import "MyClass.h"
    
    
    @implementation MyClass
    
    - (id)init
    {
        self = [super init];
        if (self) {
            // Initialization code here.
            items=[[NSMutableArray alloc] init];
        }
        
        return self;
    }
    
    - (void)dealloc
    {
        [items release];
        [super dealloc];
    }
    
    - (IBAction)dodajNowy:(id)sender {
        
        if ([pole stringValue])                           //to ma blokować dodawanie pustych tekstów ale nie działa :(
        {
        [items addObject:[pole stringValue]];
        }
        [tabelka reloadData];
        [tabelka setEnabled:YES];
    }
    
    -(NSInteger)numberOfRowsInTableView:(NSTableView *)tableView
    {
        return [items count];
    }
    
    -(id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
    {
        NSString *v=[items objectAtIndex:row];
        return v;
    }
    
    @end

    Pomimo że nie wpisuję nic czasem w okienko 1) i nacskam button i tak tabela się powiększa nie wiem dlaczego.Zmienna items powinna się nie zwiąekszać po wprowadzeniu pustego łańcucha a jednak,ląduje w niej (w items) za każdym razem gdy nacisnę button coś nawet jak nie wpiszę nic w okienko.Dlaczego.Myślałem że to przyblokuję.
    Dzięki za każdą wskazówkę.Pozdrawiam.
    Ostatnio edytowane przez hop ; 22.05.2011 o 17:42
    Komputer: macbook pro
    Telefon: iphone 3g 8gb oraz iphone 16gb


  2. Avatar janek220
    Dołączył
    Aug 2010
    Postów
    216

    Cytuj | #2

    Spróbuj zamienić:
    if ([pole stringValue])
    na
    if ([[pole stringValue] isNotEqualTo: @""])

    Tu masz napisany przeze mnie ten program na szybko (jest tylko na jednej klasie, ale może Ci się przyda)...
    http://dl.dropbox.com/u/7085278/todo.zip

    BTW. Nie jestem zawodowym programistą, nie przeczytałem ani jednej książki o Obj-C, więc potraktuj ten kod z lekkim przymrużeniem oka...
    Ostatnio edytowane przez janek220 ; 22.05.2011 o 22:21
    Komputer: Mac OS X Snow Leopard 10.6.8 x86_64
    Telefon: Samsung Galaxy SII
    Odtwarzacz: iPod Touch 4G

  3. hop
    Mężczyzna hop jest offline

    Dołączył
    Dec 2008
    Skąd
    Mińsk Maz
    Postów
    41

    Cytuj | #3

    Dzięki,Janek zaraz sprawdzę to.
    .....
    Działa wspaniale, ale można z niego sporo usunąć i dalej działa tj. powinien.Dzięki.
    Ostatnio edytowane przez hop ; 23.05.2011 o 13:00
    Komputer: macbook pro
    Telefon: iphone 3g 8gb oraz iphone 16gb

Odpowiedz na ten temat