【问题标题】:Pushing Data to UIViewController from UITableViewController从 UITableViewController 向 UIViewController 推送数据
【发布时间】:2014-05-19 21:57:12
【问题描述】:

我在将数据从我的UITableView 推送到我的UIViewController 上的 5 个标签时遇到了一个很大的问题。我有一个应用程序,您可以按下“攀登”,根据您选择的攀登方式,当您被推送到UIViewController 时会出现不同的规格。现在它只是进入一个空白屏幕,我将我的标签连接到我的班级,所有人都不确定如何让山雀将不同的信息传输到每个标签,具体取决于选择的攀登方式。我现在将发布我的代码:

FourthTableViewController.h:

#import <UIKit/UIKit.h>

@interface FourthTableViewController : UITableViewController

@property (nonatomic, strong) NSString *sectionName;

@property (nonatomic, strong) NSMutableArray *objects;
@property (nonatomic, strong) NSMutableArray *results;

@property (nonatomic, strong) IBOutlet UISearchBar *searchBar;

@end

FourthTableViewController.m:

#import "FourthTableViewController.h"
#import "DetailViewController.h"


- (void)viewDidLoad
{
[super viewDidLoad];

UIBarButtonItem *NewBackButton = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStyleBordered target:nil action:nil];
[[self navigationItem] setBackBarButtonItem:NewBackButton];

self.tableView.separatorColor = [UIColor colorWithRed:183/255.0 green:207/255.0 blue:85/255.0 alpha:0.5];

//populating arrays
NSDictionary *dict = @{/*Moss Rock Sections*/@"Grass Man":@[@"Tesseract", @"Chalky Dreams", 
@"Aristocratic Nose", @"Bee Stings", @"Recovery Run Traverse", @"Heel Shock", @"Fourth of July", 
@"No Sack", @"Poop Dreams", @"Hoop Dreams", @"Grass Man Traverse", @"Mikey Likes It", @"Just 
Throw", @"Rapture", @"Caveman Hunt", @"Batman Dyno", @"Waiting Line", @"Petrified Lady 
(project)", @"Up and Over", @"Rocker", @"Heart", @"Left Ventricle", @"Poison Ivey", @"Snake 
Eyes", @"Rattle", @"Shape Shifter", @"Road to Nowhere", @"Beef It", @"Switchback", @"Pine 
Phriend", @"Hanging Out", @"Warp Hole", @"Deet", @"Mosquito Bites"], @"Lost Roof": @[@"I'll 
Tumble for Ya", @"Snoopy's House", @"Treelee", @"Lost Roof Problem"], @"Ozzy":@[@"Clark Direct", 
@"Long Shot", @"Pile", @"Revolver", @"The Bomb", @"Suntoucher", @"A Young One", 
@"Nebuchadnezzar's Dream", @"Profanity", @"Godfather", @"Re-Ignition", @"Rancid", @"Tree 
Problem", @"Scrutinzier", @"Little Big Horn", @"Cheese is Good", @"Maybe Later", @"Double 
Clutch", @"A.X Variation", @"Salute", @"Ozzy Crack", @"Adam's Slab", @"Orange Streak", @"Tommy 
H", @"Vast Understatement", @"Super Crimp", @"Big Ben", @"Fat Cut", @"It Burns!", @"The Trip", 
@"Tesseract"]/*End Moss Rock Sections*/, @"Colorado Section 1":@[@"Colorado Climb 1", @"Colorado 
Climb 2", @"Colorado Climb 3"]};

climbs = dict[self.sectionName];

[self.objects addObjectsFromArray:climbs];
}

DetailViewController.h:

#import <UIKit/UIKit.h>

@interface DetailViewController : UIViewController

@property (strong, nonatomic) NSString *detailLabelContents;
@property (weak, nonatomic) IBOutlet UILabel *detailLabel;

@property (weak, nonatomic) IBOutlet UILabel *titleLabel;
@property (weak, nonatomic) IBOutlet UILabel *gradeLabel;
@property (weak, nonatomic) IBOutlet UILabel *coordinatesLabel;
@property (weak, nonatomic) IBOutlet UILabel *rockLabel;
@property (weak, nonatomic) IBOutlet UILabel *difficultyLabel;


@property (nonatomic, strong) NSString *climbName;

@end

DetailViewController.m:

- (void)viewDidLoad
{
[super viewDidLoad];

UIBarButtonItem *NewBackButton = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStyleBordered target:nil action:nil];
[[self navigationItem] setBackBarButtonItem:NewBackButton];

//populating arrays
NSDictionary *dict = @{@"Alabama Climb 1":@[@"Alabama Spec 1", @"Alabama Spec 2", @"Alabama Spec 
3"], @"Georgia Climb 1": @[@"Georgia Spec 1", @"Georgia Spec 2", @"Georgia Spec 3"], @"Tennessee 
Climb 1":@[@"Tennessee Spec 1", @"Tennessee Spec 2", @"Tennessee Spec 3"], @"Colorado Climb 
1":@[@"Colorado Spec 1", @"Colorado Spec 2", @"Colorado Spec 3"]};

specs = dict[self.climbName];

self.detailLabel.text = self.detailLabelContents;
}

In summary, I would like for when a climb is chosen that climbs specs appear in the 5 labels on the UIViewController it is pushed to, when another climb is chosen that climbs specs show up. (我假设这将是一个巨大的 if/else 语句)。

任何建议或建设性的批评都将不胜感激,我知道我的语法并不完美,我对这门语言很陌生。

谢谢。

【问题讨论】:

  • 您是否在任何地方设置标签文本?
  • 我不是,这是我的问题,我不确定如何做才能完成我想要的以及在哪里做?

标签: ios iphone objective-c uitableview uiviewcontroller


【解决方案1】:

要设置标签文本,您必须将NSString 传递给下一个view controller,然后将其设置在您的viewDidLoad 中。

因此,创建与您的标签相对应的 5 个属性,并像使用 climbName NSString 一样传递数据(在您的 prepareForSegue 方法中)。

要设置标签文本,请在 viewDidLoaddestination view controller 中执行此操作

self.titleLabel.text = self.myStringThatIPassed;

【讨论】:

  • 右,所以如果在我的DVC中的“ViewDidload”中的else语句,我会在我的DVC中说明这个攀登时,将标签设置为此文本吗? spp>
  • 对不起,我无法理解这个概念,你能用我提供的代码给我看一个例子吗?然后我可以查看它并更好地理解和可视化它。只是如何按下一次攀爬可以将 5 个标签设置为特定文本
  • 并非如此,您决定在您的 prepareForSegue 中传递哪些数据或字符串。
  • 当然,给我一点时间
  • 你能告诉我你从哪里得到的标题、难度等吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多