2 din 13
2
intrebari programare iPhone
  [ Ignoră ]   [ # 16 ]
RankRank
Jr. Member
Din: 
Macuser din: 27.07.09

ok, se pare ca a venit randul meu sa pun intrebari, tot referitor la UIViewTable.
Am urmatoarea structura: un Table View ca Root Controller si un Table View child. Codul de la “child” este mai jos (am niște NSLog-uri în text, au doar rolul să mă ajute in debuging, nu le băgați în seamă). View-ul “child” este generat programatic, nu din Nib. Problemele pe care le am sunt 2:
1. View-ul child mi se incarcă corect și îmi afisează primele 9 randuri. Dacă dau scroll in jos, îmi afiseaza corect pană când ajunge la ultimul element al listei de afisat (array-ul listSigns), după care dă eroare in procedura ‘cellForRowAtIndexPath’: variabila “row” nu iese din range (deci ar trebui sa existe [listSigns   objectAtIndex:row]), dar tSign se comportă de parcă ar fi nil, de parcă ‘listSigns’ ar fi inexistent/nealocat/released. După părerea mea, nu am dat nici un [listSigns release] suplimentar…. La fel se comportă daca incerc sa fac scroll în sus (când sunt la începutul listei): row devine 0 (corect, după mine) dar listSigns parcă este released, nu mai conține nimic. Bineînțeles, View-ul părinte este definit similar și merge foarte bine…când ajunge la capăt face bounce back, așa cum trebuie.
2. imaginile incărcate sunt prea mari, nu sunt scalate automat (toate au aceeasi mărime). bineînțeles, pot să umblu la mărimea iaginii, să a micșorez, dar oare nu se pot scala automat, în program, astfel încât sa încapă în rând?

@implementation CategoryRefListController
@synthesize   listSigns;
@synthesize   dataController;
@synthesize   categ;

- (void)viewDidLoad {
  DataController   *controller=[[DataController   alloc]  init];
  self.dataController=controller;
  [controller   release];
  NSMutableArray   *array=[[NSMutableArray   alloc]  init];
  int   count=[dataController   countOfSigns];
 
  NSLog(@“count este %d”, count);
 
  for (int   i=0; i

 Semnătură 

iPad2, Black, 32GB Wi-Fi
iPhone 4S 32GB;
MacBook Pro 15” 2,4GHz, MB470
iMac 21” 2.7GHz, Mid 2011
IPod Touch 8GB

Profil
 
  [ Ignoră ]   [ # 17 ]
Avatar
RankRankRankRank
Moderator
Din: Cluj-Napoca
Macuser din: 26.01.06

Inteleg ca listSigns contine obiecte TSign, dar in cellForRowAtIndexPath nu trebuie sa umbli asupra arrayului. tSign este un pointer catre listSigns, stergi pointerul, se sterge si din array. E de ajuns sa-l folosesti si sa-l lasi asa.
Banuiesc ca vroiai sa-l stergi pentru ca l-ai initializat, dar de ce sa initializezi un TSign nou si gol ca apoi sa-l suprascrii cu unul din listSigns? Incearca asa:

TSign *tSign = [listSigns objectAtIndex:row];
cell.textLabel.text=tSign.title;
cell.imageView.image=tSign.poza;

 Semnătură 

Mcintoshing…

Profil
 
  [ Ignoră ]   [ # 18 ]
RankRank
Jr. Member
Din: 
Macuser din: 27.07.09

așa este, ai dreptate. Mulțumesc!
la punctul 2 există vreo soluție?

 Semnătură 

iPad2, Black, 32GB Wi-Fi
iPhone 4S 32GB;
MacBook Pro 15” 2,4GHz, MB470
iMac 21” 2.7GHz, Mid 2011
IPod Touch 8GB

Profil
 
  [ Ignoră ]   [ # 19 ]
Avatar
RankRankRankRank
Moderator
Din: Cluj-Napoca
Macuser din: 26.01.06

se poate cu frame:

cell.imageView.image.frame = CGRectMake(x,y,width,height);

cred totusi ca ar fi mai bine sa iti faci un thumb special pentru tabel, ca sa ocupe mai putina memorie.

 Semnătură 

Mcintoshing…

Profil
 
  [ Ignoră ]   [ # 20 ]
Avatar
RankRankRankRank
Moderator
Din: Cluj-Napoca
Macuser din: 26.01.06

Stie cineva cum pot afisa un text cu new line-uri? \n si \r
se pare ca imi apar caracterele astea in loc sa faca new line. folosesc UITextView

 Semnătură 

Mcintoshing…

Profil
 
  [ Ignoră ]   [ # 21 ]
Avatar
RankRankRank
Member
Din: Sf. Gheorghe
Macuser din: 02.08.09

nu pot verifica acum, dar cred că trebuie să folosești masca tip char “%%” iar apoi pui acolo \n sau \r

 Semnătură 

MacBook Pro 13”, iPad Air 2, iPhone 6 plus, Apple TV

Profil
 
  [ Ignoră ]   [ # 22 ]
Avatar
RankRankRankRank
Sr. Member
Din: Pfaffing
Macuser din: 30.10.06
.ral:cr - 03 Noiembrie 2009 07:54 AM

Stie cineva cum pot afisa un text cu new line-uri? \n si \r
se pare ca imi apar caracterele astea in loc sa faca new line. folosesc UITextView

Cum ai scris ?

‘\n text’ sau ‘\ntext’ - normal este ‘\ntext’ și ‘\n\ntext’ etc… unde ‘text’ este ceea ce vrei tu să scri. Asta cu referire la la .strings.
Încearcă și cum spune @Fmac mai sus ; ‘%%’ dar parcă aia se folosește în cazuri mai speciale.

[ Modificat: 03 Noiembrie 2009 10:08 AM de Eugen M. ]
 Semnătură 

Localizare Mac OS X 10.5.8

Profil
 
  [ Ignoră ]   [ # 23 ]
RankRank
Jr. Member
Din: 
Macuser din: 27.07.09

Cum este generat textul? din program sau încărcat dintr-un fișier? Mie încărcat dintr-un fișier îmi merge, ceva de genul:
NSString   *pathTxt=[[NSBundle   mainBundle]  pathForResource:@“Test” ofType:@“txt”];
  NSString   *myTxt=[[NSString   alloc] initWithContentsOfFile:pathTxt encoding:NSUTF8StringEncoding error:NULL];
  myTextView.text=myTxt;
Daca este generat din program, incearca cu:
  NSString   *myTxt=[[NSString   alloc] initWithCString:“test\n rand2”];
  myTextView.text=myTxt;
și toate convențiile de la C se aplică.

 Semnătură 

iPad2, Black, 32GB Wi-Fi
iPhone 4S 32GB;
MacBook Pro 15” 2,4GHz, MB470
iMac 21” 2.7GHz, Mid 2011
IPod Touch 8GB

Profil
 
  [ Ignoră ]   [ # 24 ]
Avatar
RankRankRankRank
Moderator
Din: Cluj-Napoca
Macuser din: 26.01.06

este luat din baza de date cu:
NSString *aDescription = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 2)];

pus intr-o clasa si apoi atasat UITextView-ului cu .text

 Semnătură 

Mcintoshing…

Profil
 
  [ Ignoră ]   [ # 25 ]
RankRank
Jr. Member
Din: 
Macuser din: 27.07.09

Nu am ajuns încă la sqlite:) dar am reținut că este un API C… dacă îl iei din baza de date într-un string C si pe urmă îl faci NSString cu initWithCString în loc să-l încarci direct in NSString?

 Semnătură 

iPad2, Black, 32GB Wi-Fi
iPhone 4S 32GB;
MacBook Pro 15” 2,4GHz, MB470
iMac 21” 2.7GHz, Mid 2011
IPod Touch 8GB

Profil
 
  [ Ignoră ]   [ # 26 ]
Avatar
RankRankRankRank
Moderator
Din: Cluj-Napoca
Macuser din: 26.01.06

Da, sqlite returneaza string C, nu NSString, si trebuie convertit. asta fac mai sus, dar am mai incercat o varianta si tot nu vrea:
NSString *aDescription = [[NSString alloc] initWithCString:(char *)sqlite3_column_text(compiledStatement, 2) encoding:NSUTF8StringEncoding];

am incercat si hardcoded si intradevar merge, ma mai uit prin metodele NSStringului sa vad ce posibilitati mai sunt. bine ca am depistat unde e problema.
NSString *aDescription = @“abcd\nefgh”;

 Semnătură 

Mcintoshing…

Profil
 
  [ Ignoră ]   [ # 27 ]
Avatar
RankRankRank
Member
Din: Bucuresti
Macuser din: 11.10.05

vag offtopic, mai bine decat [[NSString alloc] init…] este [NSString stringWithCString: encoding:] pentru ca produce un string autoreleased.

Profil
 
  [ Ignoră ]   [ # 28 ]
RankRank
Jr. Member
Din: 
Macuser din: 27.07.09

eu am o altă problemă cu un UITextView: nu pot să-l fac scrollable. Încarc textul dintr-un fișier, se vede bine doar cât încape în TextView. Am atașat 2 imagini cu setările din Interface Builder, poate cineva mai experimentat decât mine poate să-mi dea o idee.

 Semnătură 

iPad2, Black, 32GB Wi-Fi
iPhone 4S 32GB;
MacBook Pro 15” 2,4GHz, MB470
iMac 21” 2.7GHz, Mid 2011
IPod Touch 8GB

Profil
 
  [ Ignoră ]   [ # 29 ]
Avatar
RankRankRank
Member
Din: Sf. Gheorghe
Macuser din: 02.08.09

trebuie sa bifezi scrolling enabled in text attributes (primul tab, mai jos)
ahh, acum vad ca ai bifat…. ar trebui sa mearga

[ Modificat: 03 Noiembrie 2009 08:57 PM de Fmac ]
 Semnătură 

MacBook Pro 13”, iPad Air 2, iPhone 6 plus, Apple TV

Profil
 
  [ Ignoră ]   [ # 30 ]
Avatar
RankRankRank
Member
Din: Sf. Gheorghe
Macuser din: 02.08.09

in ultimul tab ai bifat accesibility enabled si user interaction enabled?

 Semnătură 

MacBook Pro 13”, iPad Air 2, iPhone 6 plus, Apple TV

Profil
 
   
2 din 13
2
 
‹‹ Grand Central e acum Open Source      Fink ››